2017-11-06 20 views
-4

Ich mache eine Anwendung, die den Bevölkerungszuwachs oder -rückgang einer Stadt berechnet. Sie tippen also eine bestimmte Stadt ein und geben einen bestimmten Staat in ihre eigenen Textfelder ein. Dann tippen Sie eine Anfangspopulation in ein drittes Textfeld und eine Endpopulation in ein viertes Textfeld ein. Dann drücken Sie Berechnen und es wird eine Erhöhung oder Verringerung angezeigt auf die von Ihnen eingegebenen Bevölkerungsdaten.Validieren von Daten in einem Textfeld C#

Jetzt habe ich die Zahlen für die Grundgesamtheit validiert, so dass immer, wenn ein nicht numerischer Wert in die Populationsfelder eingegeben wird, ein Meldungsfeld angezeigt wird, das den Benutzer zur Eingabe numerischer Daten auffordert.

Ich kann einfach nicht herausfinden, wie man das gleiche mit den Stadt- und Staatsdaten macht. Wenn jemand eine Nummer in der Textbox "Stadt" oder "Staat" eingegeben hat, wie kann ich Wörter bestätigen?

Wann immer eine Nummer in das Textfeld "Stadt" oder "Staat" eingegeben wird, wie kann ich ein Meldungsfeld mit der Meldung "Ungültiges Format" anzeigen?

Dies ist mein Code

//Create a double for city 
double dblCity; 

//Create a Double for state 
double dblState; 

//Validate City 
if (double.TryParse(txtCity.Text, out dblCity)) 
{ 
    //Validate State 
    if (double.TryParse(txtState.Text, out dblState)) 
    { 

    } 
    else 
    { 
     //Display an error message for the textbox 
     MessageBox.Show("Invalid input for State."); 

     txtState.Focus(); 
     txtState.SelectAll(); 
    } 
} 
else 
{ 
    //Display an error message for the textbox 
    MessageBox.Show("Invalid input for City."); 

    txtCity.Focus(); 
    txtCity.SelectAll(); 
} 

Es bestätigt die Stadt und Staat Textfelder, um numerische Werte und alles andere ist ungültig, aber ich versuche es so zu machen, wenn alle numerischen Werte in der Stadt oder Staat eingetragen sind Textfelder wird es ungültig sein. Nur Wörter in den Textfeldern "Stadt" und "Staat" zulässig

+0

Pls Format. –

+0

Wie validierst du * momentan * die Eingabe? Welche Logik möchten Sie für diese Validierung definieren? Was ist, wenn eine Stadt * eine Nummer hat? Was genau halten Sie für einen "gültigen" Stadtnamen? Ist "fcJJ-GHidF" ein gültiger Stadtname? – David

+1

Nun, wenn Sie Zahlen validieren können OK - warum nicht den gleichen Code verwenden, um den Text zu validieren - wenn es die Überprüfung der Nummer dann ist es ein Fehler – PaulF

Antwort

1

Wenn es wichtig ist, dass Sie die richtigen Status-/Stadteinträge haben, sollten Sie Dropdown-Listen lieber als ein Textfeld bereitstellen. Sie müssen die Listen auffüllen.
Ich musste noch nie mit diesem Datensatz arbeiten, aber eine schnelle Internetsuche wird einige Ressourcen identifizieren, wo Sie eine solche Liste herunterladen können.
Sie müssen oder müssen möglicherweise nicht für das Recht bezahlen, eine solche Liste herunterladen zu müssen - und dies hat möglicherweise einen Einfluss auf die Vollständigkeit und Genauigkeit der Liste.

Mögliche Ressourcen (ich habe sie nicht geprüft) schließen ein:

https://github.com/grammakov/USA-cities-and-states
https://www.uscitieslist.org
http://www.citygridmedia.com/developer/blog/csv-download-of-cities-in-the-us-by-state

+0

upvote für die "may or may not" Teile :) –

0

Statt alle Ihre Validierung an einer Stelle zu tun, versuchen, etwas wie folgt aus:

Erstellen Sie einen "TextChanged" -Handler in Ihrem XAML für das Textfeld "Stadt" und das Textfeld "Status".

Im Code-behind, Handler aussehen etwas sollte:

Ihren Text ein wenig
private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    if (!System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z]")) 
    { 
     MessageBox.Show("This textbox accepts only alphabetical characters"); 
     textBox1.Text.Remove(textBox1.Text.Length - 1); 
    } 
} 
+0

Dies wird viele tatsächliche Städte ungültig machen. Und einige aktuelle Zustände. – David

+0

@ Clay07g Das funktioniert jetzt, also was ich auch tun möchte, ist die Textbox des Staates so zu beschränken, dass maximal 2 Buchstaben in das Textfeld eingegeben werden dürfen und dass sie nur Großbuchstaben sein dürfen? –

+0

@David Ich schlage keine strenge Kopie-Paste vor. Ich würde annehmen, dass er auch den Ausdruck ändern würde, um Sonderzeichen zu erlauben, die zu seinem potenziellen Publikum gehören. – Clay07g