Autor Beitrag
schoenewelt
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 30.09.11 16:23 
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...

ausblenden volle Höhe 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 user profile iconKha: C#-Tags hinzugefügt