2008-11-12 12 views

Odpowiedz

5

Oto interesująca article on CodeProject. Autor ma zastąpioną właściwość Wartość, aby zaakceptować wartość Null jako DateTime.MinValue, zachowując walidację MinValue i MaxValue standardowej kontroli. To wszystko.

+1

Tak pana Grazoli za NullableDateTimePicker ma wykonać zadanie, chociaż myślę, że ktoś powinien to sprawdzić i spróbować pozbyć się tych brzydkich WndProc zwraca – Calanus

+0

Inna rzecz o kodzie jest to, że nie robił tego, co powinien. Nie wiem, może robiłem coś złego. Nie masz za dużo czasu, żeby spędzić z nim zamieszanie. Korzystanie z DTP Idea ShowBox wydaje się bardziej obiecująca. – IAbstract

+0

Podczas gdy rozwiązanie pozwala użytkownikowi wyczyścić datę, nie można już ustawić fokusa na kontrolkę lub użyć klawiatury, aby ponownie wprowadzić datę inną niż null. Jeden krok w przód, dwa w tył. – ChadD

4

Umieszczenie dodatkowego pola wyboru oznaczonego jako "włącz powiadomienia", które włącza/wyłącza narzędzie DateTimePicker.

46

Nie trzeba go zmodyfikować, aby to zrobić.

Model DateTimePicker w .net ma wbudowane pole wyboru.

Ustaw właściwość ShowCheckBox na true.

Następnie można użyć właściwości Checked, aby sprawdzić, czy użytkownik wprowadził wartość.

http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.showcheckbox(VS.80).aspx

+1

Implementacja tego pola wyboru jest jednak wszelkiego rodzaju niepowodzeniem. Nie powoduje odpowiednich zdarzeń. –

0

Zamieściłem moją długą drogę rozwiązania, które ma pewne ustalenia w komentarzach kodów dotyczących specyficznych zagadnień z tej kontroli:

DateTime Picker null value

0

ustawić właściwość ShowCheckBox true. Następnie można użyć sprawdzonej właściwość następująco:

private void dateTimePicker1_ValueChanged(object sender, EventArgs e) 
     { 
      DateTimePicker thisDateTimePicker = (DateTimePicker)sender; 
      if (thisDateTimePicker.Checked == false) 
      { 
       thisDateTimePicker.CustomFormat = @" "; //space 
       thisDateTimePicker.Format = DateTimePickerFormat.Custom; 
      } 
      else 
      { 
       thisDateTimePicker.Format = DateTimePickerFormat.Short; 
      } 
     } 
Powiązane problemy