是否可以限制用戶可以從C#winforms應用程序的dateTimePicker
中選擇哪些日期?限制C#win窗體中的日期DateTimePicker
我的基本原理是這樣的:我有一個comboBox
其中有5個項目,根據哪個項目用戶選擇我想限制哪些日期用戶可以從中選擇,使不可用的日期變灰。
這可能嗎?
是否可以限制用戶可以從C#winforms應用程序的dateTimePicker
中選擇哪些日期?限制C#win窗體中的日期DateTimePicker
我的基本原理是這樣的:我有一個comboBox
其中有5個項目,根據哪個項目用戶選擇我想限制哪些日期用戶可以從中選擇,使不可用的日期變灰。
這可能嗎?
是的,至少MSDN是這麼說的。請參閱here。
dateTimePicker.MinDate = DateTime.Now;
dateTimePicker.MaxDate = DateTime.Now.AddDays(15);
(呈現在法國的Windows 7)
您可以設置一個最小和C#的WinForms DTP最大的日期,所以如果這是你想要做的事情,那麼你可以使用MinValue
和MaxValue
變量。您不能挑選不允許的日期塊。這是你必須添加自己的東西。有這樣做的2種可能的方法:
該DateTimePicker
控制具有MaxDate
和MinDate
屬性。設置這些,你可以控制可以選擇的日期範圍。目前,在Windows XP中,Windows經典主題的無法選擇的日期不會顯示爲灰色,但這可能因操作系統,主題等而異。如果您絕對要必須變灰,那麼您必須繼承DateTimePicker控件的子類並執行(或部分)繪畫自己。
是的,必須選擇,用戶不能進入那裏擁有數據。例如,如果用戶選擇第一個項目,則只有'Thursdays'可用於從dateTimePicker或monthCalender中進行選擇。 – YoBroJas
這改變了很多東西。你應該在問題中指定這個。恐怕你沒有選擇,只能繼承DateTimePicker控件並自己處理繪圖,因爲你不再談論單個最小 - 最大範圍,而是在談論多個範圍。您還必須自己執行驗證:如果用戶選擇了灰色日期,則需要防止控件自行解散。好的 - 你可能不需要對控件進行子類化,你可以通過點擊它的事件而逃脫。但這是相當多的工作。 –
您可以通過以下方式
dateTimePicker1.MinDate = DateTime.Today.AddDays(-2);
dateTimePicker1.MaxDate = DateTime.Today.AddDays(2);
在這種情況下成立的日期限制,只有5個可用的日期將是可選擇的用戶,其餘是不可用的。您可以在組合框的selectedindex changed事件中設置這些值,並根據您的要求/邏輯限制它。
因此,用戶可以輸入一個不存在於Combo中的日期,或者他只能從Combo中選擇一些東西? – Sandy
你可能也想看看[MonthCalendar'控件](http://msdn.microsoft.com/en-us/library/f9a9k6dd.aspx) –
是的,必須選擇,用戶不能進入那裏數據。例如,如果用戶選擇第一個項目,則只有'Thursdays'可用於從dateTimePicker或monthCalender中進行選擇。 – YoBroJas