none
Brauche hilfe beim lesen und beim Text einsetzen bei C# RRS feed

  • Allgemeine Diskussion

  • Hallo mein Name ist Daniel und ich brauche Hilfe beim schreiben eines Codes.

    Ich brauche so einen Code viel einfacher (egal wie !), da ich diese Abfrage (siehe Code) ca. 100 mal brauche und es ein Haufen arbeit ist das alles it der Hand zu schreiben.

    Vielen Dank im Voraus !

    //Erste Abfrage

    if (tb1.Text == "Text A") { if (tb2.Text == "Text 1") { tb3.Text = "Text Blau" } if (tb2.Text == "Text 2") { tb3.Text = "Text Grün" } }

    //Zweite  Abfrage

    if (tb4.Text == "Text A") { if (tb5.Text == "Text 1") { tb6.Text = "Text Blau" } if (tb5.Text == "Text 2") { tb6.Text = "Text Grün" } }


    Donnerstag, 4. Mai 2017 16:22

Alle Antworten

  • Hallo Daniel,

    "egal wie" ist nicht unbedingt sinnvoll. Wenn, dann sollte man es schon gleich so machen, wie es richtig wäre.

    Es gibt verschiedene Ansätze. Wie man vorgeht, hängt aber u.a. von deinen genauen Anforderungen, dem Aufbau deiner Controls, usw. ab.

    Ausgehend davon, dass Du einfach 100e Textboxen hast und die alle auf die gleichen Werte hin geprüft werden sollen, wäre folgende eine mögliche Lösung:

    public void ChangeTextBoxValue( TextBox tb1, TextBox tb2, TextBox tb3 )
    {
        if( tb1.Text == "Text A" )
        {
            if( tb2.Text == "Text 1" )
            {
                tb3.Text = "Text Blau";
            }
            if( tb2.Text == "Text 2" )
            {
                tb3.Text = "Text Grün";
            }
        }
    }

    In deinem Code rufst Du dann nur noch folgendes auf:

    this.ChangeTextBoxValue( tb1, tb2, tb3 );
    ...
    this.ChangeTextBoxValue( tb4, tb5, tb6 );
    ...
    this.ChangeTextBoxValue( tb7, tb8, tb9 );

    D.h. Du kapselst deinen Code einfach in eine Methode mit Übergabeparametern für die einzelnen Textboxen und prüfst dann in der Methode nur noch gegen die Übergabewerte.

    Wie gesagt, man kann das auch anders machen, da ich aber nicht weiß, ob Du bspw. deinen Controlaufbau komplett ändern kannst oder ob diese Abfragen nicht einzeln, sondern alle auf einmal durchlaufen werden müssen, will ich jetzt nicht jede mögliche Variante aufzeigen.

    Falls Du was anderes brauchst, beschreib bitte genauer, was Du wo in welcher Form aus welchem Grund wie machen willst :)

    ---

    Die hart verdrahteten Werte solltest Du evtl. als Konstanten oder zumindest Variablen oder Eigenschaften irgendwo hinterlegen. Falls die variabel sein müssen, solltest Du sie als weitere Übergabeparameter an die Methode übergeben.

    ---

    Falls es nicht nur die beiden Vergleichswerte "Text 1" und "Text 2" sein sollen, sondern evtl. auch mal mehr werden, würde sich der Wechsel von if( ... ) zu switch empfehlen. Siehe hierzu:

      switch (C#-Referenz)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community



    Donnerstag, 4. Mai 2017 16:53
    Moderator