2011-12-19 60 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

相關問題