2011-12-19 17 views
0

私はWinformとC#を使用しています。winformでmindateとmaxdateを設定する方法Datagridview datetime picker Control?

私は、以下のリンクコードを使用して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); 

しかし、私はデータグリッドビューの列のすべての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 Proprietyを取得していません。あなたはすべてのセルのためにそれを強制したい場合は、CalendarEditingControlのコンストラクタに追加することができ

+1

私は質問を理解していません。あなたはすでにあなた自身に答えました。その目的のために意図されたプロパティを使用してください。あなたはこれをやっているのに何の問題がありますか? –

+0

私は、マインド・タイムが最大であることを知っています。しかし、私はdatagridviewの列でこれを実装する方法を知らない。私の問題を理解しましたか? – Sagotharan

答えて

1

CalendarColumnクラスに新しいプロパティを追加します。

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

あなたはその列にこれらのプロパティを設定することができ、それらは以下となります。次のコードを追加し、

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

そしてInitializeEditingControlコントロールでDateTimePickerに反映されます(新しいセルの場合のみ考慮されます)。

+0

私はdatetimepicker1.mindate = DateTime.Todayのような心配maxdateを設定する方法; 値を割り当てる場所と方法。 – Sagotharan

+1

カラムにプロパティを設定します。 '((CalendarColumn)dataGridView2.Columns [" date "])。MinValue = ...' –

+0

ありがとうございました。これは私が必要です。 – Sagotharan

1

...私のミスは何です:

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

あなたはまた、それをより汎用的にするために、いくつかのデザイナーのプロパティを公開することができ必要ならば、これはあなたの使用に十分かもしれません。

+0

私は答えを得た。ありがとう。 1 + – Sagotharan

関連する問題