C# leere Textbox per nullable int einlesen

palaber

Captain
Registriert
Juni 2006
Beiträge
3.856
Hey,

ich steh gerade ziehmlich aufm schlauch. Vorne weg, ich bin nicht so der Programmiercrack.
Die Suche im Internet hat mir leider nicht geholfen, daher wende ich mich an euch.

Ich habe einige Textboxen, die ich mit Windows Forms erstellt habe. Diese moechte ich auslesen und in ein int? array speichern.
Hierzu habe ich properties angelegt.

Jetzt komm ich aber zum Knackpunkt. Ich moechte, dass die Eingabe geprueft wird.
Mit nem "normalen" int hab ich das per TryParse hinbekommen. Aber auch nicht so 100%ig.
Wenn ich eine leere Textbox eingelesen habe, kam die Exception. Das waere auch i.O., wenn es sich um ein Sonderzeichen oder Buchstabe handeln wuerde.

Mein bisheriger Code:

Code:
public int Limit1LF
{
    get
    {
        int iWert;
        if (int.TryParse(textboxLimit1LF.Text, out iWert) == true || textBox1LF.Text == "")
        {
             return iWert
         }

         else
              throw new Systemexception("bla");
     }
}
 
If (textBox1LF.Text != "")
Das sollte man so nicht machen. Besser wäre das: If (!string.IsNullOrEmpty(textBox1LF.Text))

@palaber
Was ist denn jetzt eigentlich das Problem? Soll die Exception nur kommen, wenn das Feld anderes als Zahlen beinhaltet und gleichzeitig nicht leer ist?
 
Ich versuch nochmal einen anderen ansatz. Hat sich gerade beim programmieren so ergeben. Also heisst ich habe festgestellt das ich es wie folgt machen muss.
Ich habe pro Limit 4 Textboxen und insgesamt 4 Limits. Jede Textbox darf nur zahlen uebergeben oder eine "leere Textboxt".
Die ersten 4 TB fuer Limit 1 duerfen nicht leer sein!
klappt soweit.

Werden Buchstaben oder Sonderzeichen eingetragen soll eine Fehlermeldung kommen.
- das klappt soweit

Steht eine Zahl in der Textbox soll die Zahl returnt werden - mit TryParse
- das klappt auch

Steht nichts in der Textbox soll "null" uebergeben werden - eine zahl geht in diesem Fall da evtl. der komplette zahlenbereich von int ausgeschoepft werden muss.

hierfuer habe ich jetzt eine int? angelegt, die Nullable ist. sieht dann wie folgt aus. (e-Laurin, deinen Ansatz mit StringIsEmpty werde ich noch implementieren):

Code:
public int? Limit2LF
{
    get
    {  
        int iTmp;
        int? iTmp2;

        if (textBoxLimit2LF.Text == "")
        {
             iTmp2 = null;
             return iTmp2;
         }

         else if (int.TryParse(textBoxLimit2LF.Text, out iTmp))
        {
             return iTmp;
        }

        else : throw exception //Pseudocode
     }
}


EDIT2:
Aber irgendwie loest das auch nicht mein problem. Klappt mit dem obigen Code nicht so wie ich mir das vorgestellt habe :( - er springt bei einer lehren Textbox immer in die else schleife, wirft den Fehler und dann is rum.

EDIT3:
Jetzt klappts - haha sollte mal oefters ne pause machen, sonst sieht man den Wald vor lauter Baeumen nicht mehr ;)
 
Zuletzt bearbeitet:
Zurück
Oben