2009-08-25 8 views
0

Ich habe verschiedene Steuerelemente (TextBoxes, DateTimePickers, MaskedTextBoxes) auf einem Formular, das ich überprüfen möchte, ob sie irgendwelche Daten enthalten. Ich habe den folgenden Code in dem Click-Ereignis meiner Schaltfläche „Speichern“:Check Control.Value für Daten

private void radBtnSave_Click(object sender, EventArgs e) 
    { 
     this.Cancelled = false; 
     bool bValid = true; 

     foreach(Control control in this.Controls) 
     { 
      if (control.Tag == "Required") 
      { 
       if (control.Text == "" || control.Text == null) 
       { 
        errorProvider.SetError(control, "* Required Field"); 
        bValid = false; 
       } 
       else 
       { 
        errorProvider.SetError(control, ""); 
       } 
      } 
     } 

     if (bValid == true) 
     { 
      bool bSaved = A133.SaveData(); 
      if (bSaved != true) 
      { 
       MessageBox.Show("Error saving record"); 
      } 
      else 
      { 
       MessageBox.Show("Data saved successfully!"); 
      } 
     } 
    } 

Dies funktioniert gut für die Textfelder und MaskedEditBoxes jedoch ist es nicht für die DateTimePickers arbeiten. Für diese weiß ich, dass ich die Eigenschaft .Value überprüfen muss, aber ich kann nicht scheinen, auf das vom Kontrollobjekt (d. H. "Control.Value ==" "|| control.Value == null") zuzugreifen.

Fehle ich etwas offensichtlich? Irgendwelche Vorschläge von Änderungen, die ich zu diesem Code machen kann, um mir zu erlauben, die DateTimePicker Werte zu überprüfen (oder nur den Code überhaupt zu verbessern), wird sehr geschätzt.

+0

Vielen Dank für Ihre Hilfe! Ich habe es jetzt richtig funktioniert. – Sesame

Antwort

3

Sie müssen sie zu einem Datetime werfen:

DateTimePicker dtp = control as DateTimePicker; 
if(dtp !=null) 
{ 
    //here you can access dtp.Value; 
} 

Verwenden Sie auch String.IsNullOrEmpty (control.Text) im ersten Teil des Codes.

0

Sie werden so etwas tun:

foreach(Control control in this.Controls) 
{ 
    if (control.Tag == "Required") 
    { 
     DateTimePicker dtp = control as DateTimePicker; 
     if (dtp != null) 
     { 
      // use dtp properties. 
     } 
     else if (control.Text == "" || control.Text == null) 
     { 
      errorProvider.SetError(control, "* Required Field"); 
      bValid = false; 
     } 
     else 
     { 
      errorProvider.SetError(control, ""); 
     } 
    } 
} 
1

Es gibt keine Value Eigenschaft für Control s; DateTimePicker zum Beispiel, erstellt eine eigene Eigenschaft, die es einzigartig ist.

Leider gibt es keine allgemeingültige Möglichkeit, dies aus einer einzigen Schleife von Control Objekten zu behandeln. Das Beste, was Sie tun können, ist etwas in der Form von diesem:

if(control is DateTimePicker) 
{ 
    var picker = control as DateTimePicker; 
    // handle DateTimePicker specific validation. 
}