2011-12-02 56 views
3

是否可以限制用戶可以從C#winforms應用程序的dateTimePicker中選擇哪些日期?限制C#win窗體中的日期DateTimePicker

我的基本原理是這樣的:我有一個comboBox其中有5個項目,根據哪個項目用戶選擇我想限制哪些日期用戶可以從中選擇,使不可用的日期變灰。

這可能嗎?

+0

因此,用戶可以輸入一個不存在於Combo中的日期,或者他只能從Combo中選擇一些東西? – Sandy

+0

你可能也想看看[MonthCalendar'控件](http://msdn.microsoft.com/en-us/library/f9a9k6dd.aspx) –

+0

是的,必須選擇,用戶不能進入那裏數據。例如,如果用戶選擇第一個項目,則只有'Thursdays'可用於從dateTimePicker或monthCalender中進行選擇。 – YoBroJas

回答

0

是的,至少MSDN是這麼說的。請參閱here

9

使用MinDateMaxDate屬性。

dateTimePicker.MinDate = DateTime.Now; 
dateTimePicker.MaxDate = DateTime.Now.AddDays(15); 

DateTimePicker
(呈現在法國的Windows 7)

+0

我已將屬性設置爲僅顯示1日曆。例如,如果用戶選擇了組合框中的第一個項目,則只有'Thursdays'可用於從dateTimePicker或monthCalender中進行選擇。這可能嗎? – YoBroJas

+0

@ user1077021:請參閱http://stackoverflow.com/questions/2361691/how-do-i-disable-some-dates-on-a-datetimepicker-control – Otiel

1

您可以設置一個最小和C#的WinForms DTP最大的日期,所以如果這是你想要做的事情,那麼你可以使用MinValueMaxValue變量。您不能挑選不允許的日期塊。這是你必須添加自己的東西。有這樣做的2種可能的方法:

  • 漢鼎ValueChanged事件,然後驗證所選擇的日期。
  • 繼承DTP類並在其中添加一些額外的功能。
1

DateTimePicker控制具有MaxDateMinDate屬性。設置這些,你可以控制可以選擇的日期範圍。目前,在Windows XP中,Windows經典主題的無法選擇的日期不會顯示爲灰色,但這可能因操作系統,主題等而異。如果您絕對要必須變灰,那麼您必須繼承DateTimePicker控件的子類並執行(或部分)繪畫自己。

+0

是的,必須選擇,用戶不能進入那裏擁有數據。例如,如果用戶選擇第一個項目,則只有'Thursdays'可用於從dateTimePicker或monthCalender中進行選擇。 – YoBroJas

+1

這改變了很多東西。你應該在問題中指定這個。恐怕你沒有選擇,只能繼承DateTimePicker控件並自己處理繪圖,因爲你不再談論單個最小 - 最大範圍,而是在談論多個範圍。您還必須自己執行驗證:如果用戶選擇了灰色日期,則需要防止控件自行解散。好的 - 你可能不需要對控件進行子類化,你可以通過點擊它的事件而逃脫。但這是相當多的工作。 –

0

您可以通過以下方式

dateTimePicker1.MinDate = DateTime.Today.AddDays(-2); 
dateTimePicker1.MaxDate = DateTime.Today.AddDays(2); 

在這種情況下成立的日期限制,只有5個可用的日期將是可選擇的用戶,其餘是不可用的。您可以在組合框的selectedindex changed事件中設置這些值,並根據您的要求/邏輯限制它。