我正在使用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;
}
我知道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。我的错是什么......
答案 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
中(请注意,它将仅考虑新单元格)