2011-12-19 81 views
0

我正在使用Winform和C#。如何在winform中设置mindate和maxdate Datagridview datetime picker控件?

因为我使用下面的链接代码在datagridview控件中添加了calander单元。

它完美的工作。

http://msdn.microsoft.com/en-us/library/7tas5c80.aspx

我添加日历控件代码....

foreach (DataGridViewRow row in this.dataGridView2.Rows) 
       { 
        row.Cells[4].Value = DateTime.Now;      
       } 

enter image description here

我知道为MinDate和MAXDATE礼上正常使用。

dateTimePicker1.MinDate = DateTime.Today; 

dateTimePicker1.MaxDate = DateTime.Today.AddYears(1); 

但我想在datagrid视图列中的所有calander控件中设置最小日期和最大日期。

如何实现datagridview的日期时间控制的最小和最大日期的所有行,

请帮帮我。,,

更新问题

public class CalendarCell : DataGridViewTextBoxCell 
     { 

      public CalendarCell() 
       : base() 
      { 
       // Use the short date format. 
       this.Style.Format = "d"; 
      } 

      // For Min And Max DATE 
      public DateTime MaxDate { get; set; } 
      public DateTime MinDate { get; set; } 

      public override void InitializeEditingControl(int rowIndex, object 
       initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) 
      { 
       // Set the value of the editing control to the current cell value. 
       base.InitializeEditingControl(rowIndex, initialFormattedValue, 
        dataGridViewCellStyle); 
       CalendarEditingControl ctl = 
        DataGridView.EditingControl as CalendarEditingControl; 

       // For Min And Max DATE 
       ctl.MinDate = MinDate; 
       ctl.MaxDate = MaxDate; 

       // Use the default row value when Value property is null. 
       if (this.Value == null) 
       { 
        ctl.Value = (DateTime)this.DefaultNewRowValue; 
       } 
       else 
       { 
        ctl.Value = (DateTime)this.Value; 
       } 
      } 

我的代码,..

但我没有得到MinDate和MaxDate礼貌。什么是我的错......

+1

我不确定我是否理解这个问题。您已经自己回答了,请使用用于此目的的属性。你有什么问题呢? – 2011-12-19 14:37:09

+0

我知道mindate maxdate propriety是在datetime选择器中。但我不知道如何在datagridview列中实现它。你明白我的问题吗? – Sagotharan 2011-12-19 14:58:41

回答

1

添加新的特性到CalendarColumn类:

public DateTime MinDate { get; set; } 
public DateTime MaxDate { get; set; } 

而在InitializeEditingControl控制,添加以下代码:

ctl.MinDate = this.MinDate; 
ctl.MaxDate = this.MaxDate; 

然后,您可以在列设置这些属性,它们将将被反映在DateTimePicker s(请注意,仅在新单元中才考虑)

+0

我如何设置mindate maxdate像datetimepicker1.mindate = DateTime.Today; 在哪里以及如何分配价值。 – Sagotharan 2011-12-19 15:47:13

+1

您在列上设置属性:'((CalendarColumn)dataGridView2.Columns [“date”])。MinValue = ...' – 2011-12-19 15:48:26

+0

谢谢。这是我需要的。 – Sagotharan 2011-12-19 15:57:04

1

如果要强制执行,对于所有单元格可以将它添加到CalendarEditingControl的构造函数:

public CalendarEditingControl() 
{ 
    this.MinDate = DateTime.Today; 
    this.MaxDate = DateTime.Today.AddYears(1); 
    this.Format = DateTimePickerFormat.Short; 
} 

你也可以公开一些设计特性,使其更通用如果你需要,但这可能足以满足你的使用。

+0

我得到了答案。谢谢。 1+ – Sagotharan 2011-12-19 15:57:49

相关问题