schoenewelt - Fr 30.09.11 16:23
Titel: MaskedTextBox Binding DateTime (Winforms!)
Hallo zusammen,
ich habe ein Programm in dem eine MaskedTextBox verwendet wird um ein Datum (Formatiert!) anzuzeigen.
AttID_4 ist ein Datumsfeld in der DB.
Jetzt zu den Problem: Wird ein Datum eingegeben ist alles ok. Selektiert man die MaskedTextBox auch ok. Erst wenn man versucht den Inhalt zu leeren und und so zu lassen kann man die MaskedTextBox nicht mehr verlassen. Es muss etwas drinstehen!!!!!! Deshalb auch "e.Value = DateTime.Now.ToString();" im EventHandler.
Das Feld in der DB lässt Null-Werte zu.
Ich habe versucht das Problem mit der Property "
b.NullValue = "";" zu lösen => Klappt nicht.
Unten der Code dazu...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| Binding b = new Binding("Text", m_bindingSource, "AttID_4", true, DataSourceUpdateMode.OnPropertyChanged, string.Empty);
mtbx.Mask = "00/00/0000";
mtbx.ValidatingType = typeof(DateTime);
b.Parse += new ConvertEventHandler(b_Parse_DateTime);
EventHandler: private void b_Parse_DateTime(object sender, ConvertEventArgs e) { try { if (e.Value != null && e.Value.ToString().Length == 10) { if (e.Value != DBNull.Value) { string shortDatePattern = SharedBusinessLogic.DateTimeConverter.GetShortDateInputPattern(); e.Value = Convert.ToDateTime(e.Value).ToString(shortDatePattern); } else { e.Value = DateTime.Now.ToString(); } } else {
e.Value = DateTime.Now.ToString(); } } catch (Exception ex) { SendExceptionMail(ex); } } |
Über Hilfe an dieser Stelle wäre ich sehr dankbar...
Gruß,
Schoenewelt
Lösung: mann muss e.Value = DBNull.Value zuweisen.
Moderiert von
Kha: C#-Tags hinzugefügt