Jaki jest najprostszy i najbardziej niezawodny sposób zmiany formantu .NET DateTimePicker, aby umożliwić użytkownikom wprowadzanie wartości null
?Jak zmienić formant .NET DateTimePicker, aby umożliwić wprowadzanie wartości pustych?
Odpowiedz
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.
Umieszczenie dodatkowego pola wyboru oznaczonego jako "włącz powiadomienia", które włącza/wyłącza narzędzie DateTimePicker.
rozwiązanie Tri za nie dość cut to dla mnie i tak myślał Pan Grazioli i zrobił coś o tym: http://www.codeguru.com/csharp/csharp/cs_controls/custom/article.php/c9645
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
Implementacja tego pola wyboru jest jednak wszelkiego rodzaju niepowodzeniem. Nie powoduje odpowiednich zdarzeń. –
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:
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;
}
}
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
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
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