如何在winform Datagridview日期时间选择器控件中设置mindate和maxdate?

时间:2011-12-19 14:32:16

标签: winforms c#-4.0

我正在使用Winform和C#。

我使用下面的链接代码在datagridview控件中添加了压缩单元格。

完美的工作。

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 datetime控件中为所有行实现最小和最大日期。,

请帮帮我。,

更新的问题

 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。我的错是什么......

2 个答案:

答案 0 :(得分:1)

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

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

如果需要,您还可以公开一些设计器属性以使其更通用,但这可能足以满足您的使用。

答案 1 :(得分:1)

CalendarColumn类添加新属性:

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

InitializeEditingControl控件中,添加以下代码:

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

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