Mehrere Events vereinheitlichen



  • Hallo mal wieder,

    gibt es eine Möglichkeit, diesen Code als eine Methode zu schreiben?
    Als Info: Es gibt mehrere Textboxen, die zu Beginn als Standard die Art des Feldes als Text hinterlegt haben, also Telefon, Fax Ust-Id usw.
    Sobald man in die Textbox schreiben möchte, wird dieser Text entfernt und es können die richtigen Angaben eingetragen werden. Falls man ein zweites Mal in das Feld kommt, soll natürlich der "richtige" Text nicht wieder entfernt werden.

    private void tbTel_Enter(object sender, EventArgs e)
            {
                if (tbTel.Text == "Telefon")
                    tbTel.Text = "";
            }
            private void tbFax_Enter(object sender, EventArgs e)
            {
                if (tbFax.Text == "Fax")
                    tbFax.Text = "";
            }
            private void tbVat_Enter(object sender, EventArgs e)
            {
                if (tbVat.Text == "USt-IdNr.")
                    tbVat.Text = "";
            }
    // ...
    

    Ich dachte an etwas in diese Richtung, aber wie kann ich dann jeweils den Standardwert abprüfen??

    private void OnEnterTextBox(object sender, EventArgs e)
            {
                if (sender is TextBox)
                {
                    TextBox tb = (TextBox)sender;
    
                    // ???
                }
            }
    


  • Ich würde da den Schritt wagen und den Standartwert zusätzlich zur Text-Property noch in der Tag-Property hinterlegen.

    Dann kannst du im Anschluss ganz einfach Prüfen ob der Text dem Tag entspricht. Wenn ja, dann wird das Feld eben geleert.

    private void OnTextBoxEnter(Object sender, EventArgs e)
    {
        if(sender is TextBox)
           this.CheckRemoveDefault((TextBox)sender);       
    }
    
    private void CheckRemoveDefault(TextBox tbx)
    {
        if(tbx.Tag.ToString().Equals(tbx.Text))
            tbx.Text = string.Empty;
    }
    




  • Habe es jetzt so gelöst, wie inflames2k vorgeschlagen hat. Ich werde mir bei Gelegenheit aber mal Watermarks anschauen, danke für den Tipp!

    @inflames2k:
    Noch als Verständnisfrage zum Code - weshalb verwendet man da zwei Methoden? Theoretisch könnte man es auch in eine fassen; auch wenn es dann sicherlich nicht mehr so sauber ist.
    Gibt es daher eine Art "Regel", wann man Code in eine weitere Methode schreibt? Oder an was kann ich mich da zukünftig orientieren?



  • Im Grunde ist das eine Stil-Frage. - Ich bevorzuge es aber Code nicht unbedingt direkt im Ereignis-Handler zu schreiben. Einfach aus Gründen der Wiederverwendbarkeit.

    Willst du nämlich zum Beispiel irgendwann alle Textboxen in einer Schleife durchgehen und manipulieren (in dem Fall StandardTexte setzen / entfernen) brauchst du nur noch pro Textbox die Methode aufrufen.


Log in to reply