幫助,請?!這個問題是因爲我有一個使用datetimepicker控件的舊用戶控件。如果沒有日期顯示在datetimepicker的文本框中,那麼.Value屬性設置爲DateTimePicker.MinimumDateTime。如果.Value是DateTimePicker.MinimumDateTime,OnValueChanged會將CustomFormat更新爲「」。否則,CustomFormat是「yyy-MM-dd hh:mm:ss tt」。如何以編程方式關閉datetimepicker的下拉日曆或更新下拉日曆以反映.Value屬性?
問題==>在DropDown事件中,我檢查最小日期時間。如果.Value等於那個,那麼我將.Value更新爲DateTime.Now。顯示下拉日曆時,日曆設置爲1753-01-01,而文本框(.Value)顯示DateTime.Now。
如何讓日曆顯示與在DropDown事件中更新的.Value屬性相對應的日期?即使在DateTimePicker的值從DateTimePicker.MinimumDateTime更改爲DateTime時,有一種方法可以'取消'DateTimePicker上的第一個DropDown事件。現在我認爲可以工作,因爲第二次(以及後續時間)的下拉列表日曆顯示日曆正確匹配文本框(DateTimePicker.Value)中顯示的日期。
這裏是我已經有問題連入的DateTimePicker事件的代碼:
private void ValueDatetimePickerOnKeyUp(Object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Delete && e.KeyCode != Keys.Back)
return;
var dp = (DateTimePicker)sender;
if (dp == null)
return;
dp.Value = DateTimePicker.MinimumDateTime;
}
private void ValueDatetimePickerDropDown(Object sender, EventArgs e)
{
var dp = (DateTimePicker)sender;
if (dp == null)
return;
if (dp.Value == DateTimePicker.MinimumDateTime)
dp.Value = DateTime.Now;
}
private void ValueDatetimePickerValueChanged(Object sender, EventArgs e)
{
var dp = (DateTimePicker)sender;
if (dp == null)
return;
dp.CustomFormat = dp.Value == DateTimePicker.MinimumDateTime ? " " : "yyyy-MM-dd hh:mm:ss tt";
}
當您更新.Value屬性時,是否可以更新.Text屬性?只是一個想法 – user959729 2013-02-21 23:40:07
@ user959729 - 謝謝你的迴應。 .Text屬性不是問題。 .Value更新爲DateTime.Now時,它將在文本框中顯示當前日期/時間。問題是下降的日曆認爲它是1753年1月1日,因爲那是在我在DropDown事件中更新它之前的.Value屬性的值。我需要一種方法讓日曆與文本框(.Text和.Value)顯示相同的年份,月份,日期。我希望我很清楚。我覺得我在圈子裏說話。讓我知道你是否需要更多信息。再次感謝。 – 2013-02-21 23:48:07
您是否嘗試過調用.Invalidate()?這將迫使控制器繪製並希望具有正確的值。你也可以嘗試一下beginUpdate()和endUpdate()。更多的想法。我還沒有測試任何這 – user959729 2013-02-21 23:56:32