2016-04-07 10 views
-2

Der folgende Code ist ein Formular, das nach einem beliebigen Text im Feld suchen sollte. Wenn kein Text gefunden wird, sollte ein Meldungsfeld angezeigt werden, in dem er es erneut versuchen kann. Code ist unter:C# Message Box Display

if (string.IsNullOrWhiteSpace(OrderField.Text)) 
{ 
    MessageBox.Show("Please input Order Number"); 
} 
else 
{ 
    MessageBox.Show("Derp"); 
} 
if (string.IsNullOrWhiteSpace(BoxField.Text)) 
{ 
    MessageBox.Show("Please input Number of Boxes"); 

} 
else 
{ 
    MessageBox.Show("Derp"); 
} 
+6

Und das Problem ist? – Bauss

+2

@Bauss, nachdem er es mehrmals gelesen hat, scheint es so, als ob die Messagebox ein Eingabefeld haben soll. Dies kann erreicht werden, indem Sie ein eigenes Formular erstellen, das Sie dann in modal starten, oder Sie können die vb-Bibliothek importieren und ein Eingabefeld verwenden –

+0

Bitte helfen Sie uns und sagen Sie, was Sie wirklich wollen, dass Ihr Code tut. –

Antwort

0

Ich denke, Sie möchten das Formular validieren, wenn eine Eingabe leer ist? Schleife alle Textinput-Steuerelement in Form, sollten Sie den angezeigten Namen Sie für jede Textbox von Tag Attribut wollen gesetzt:

foreach(Control c in this.Controls) { 
    if(c is TextBox) { 
     var textbox = c as TextBox; 
     if(string.IsNullOrEmpty(textbox.Text)) { 
     MessageBox.Show(textbox.Tag.ToString() + " is empty"); 
     } 
    } 
} 
1

Ich schlage vor, eine Methode Extrahieren:

using System.Linq; 

... 

private static Boolean IsControlValid(Control control) { 
    if (!String.IsNullOrWhiteSpace(control.Text)) 
    return true; 

    // Let's be nice: put key board focus to the control 
    if (control.CanFocus) 
    control.Focus(); 

    MessageBox.Show(String.Format("Please input number at {0}.", control.Name)); 

    return false; 
} 

... 

private void SaveAndClose() { 
    // Put here all controls to be tested 
    Control[] controls = new Control[] { 
    OrderField, 
    BoxField, 
    }; 

    // do we have any controls that should be filled in? 
    if (controls.Any(control => !IsControlValid(control))) 
    return; 

    ... 
    // all controls are valid; so save/send the data 
    ... 

    Close(); // close the form 
}