我正在修改一些使用DateTimePicker
的自定義日曆控件的代碼。我已經設置了ShowCheckBox = true
,並且我試圖強制它在用戶單擊複選框(通過更改日期的CustomFormat
)時將日期的值更改爲null,該方式有效。我的問題是,它需要太多的點擊複選框來更改DateFormat。我的基本CalendarColumn來自http://msdn.microsoft.com/en-us/library/7tas5c80.aspx,但不包括複選框,並且不允許空值。DateTimePicker需要點擊多個複選框才能觸發OnValueChanged
我OnValueChanged()
代碼:
protected override void OnValueChanged(EventArgs eventargs)
{
// Notify the DataGridView that the contents of the cell
// have changed.
base.OnValueChanged(eventargs);
if (this.Checked)
{
this.Checked = true;
this.Format = DateTimePickerFormat.Short;
} else if (!this.Checked)
{
this.Format = DateTimePickerFormat.Custom;
this.CustomFormat = " ";
}
}
上的複選框(當它的值被檢查)第一次單擊變灰的日期,但不火的OnValueChanged()
方法,第二次點擊設置回「選中「,然後觸發事件,第3次點擊將CustomFormat
設置爲」「,因此應該顯示空日期。
我已經做了一些研究,我認爲我的問題與第一次點擊獲得單元格焦點有關,但如果我將我的支票放在onGotFocus()
中,單擊一下鼠標就會顯示/隱藏日期格式,但是當我在取消選中複選框後點擊另一個單元格時,仍將CustomFormat
設置爲「」而不是DateTimePickerFormat.Short
。
有關類似問題的其他答案請參考http://www.mofeel.net/70-microsoft-public-dotnet-framework-windowsforms/8806.aspx,但我很困惑我將如何將其納入我的代碼。我沒有發佈全班,但如果有人認爲會有幫助,可以做嗎?