Aktive TextBox



  • Guten Tag die Damen und Herren,

    ich habe auf meiner Form 2 aktive TextBoxen.
    Wenn ich jetzt auf einen Nummerischen-Button klicke, soll die aktive TextBox den nummerischen Wert bekommen.

    D.h. ich habe 10 Button von 0 bis 9.
    Wenn ich auf die 0 klicke, soll abgefragt werden, ob die TextBox1 aktiv ist, und wenn ja, dann soll an der Stelle wo der blinkende Strich innerhalb der TextBox ist, die "0" reingeschrieben werden.

    Wie genau kann ich abfragen, ob die TextBox1 aktiv ist?

    Gruß,
    Sven



  • Hallo,

    dass ist eigentlich recht einfach. Du brauchst nur abzufragen ob die Textbox den Focus hat.

    Beispiel:

    if(meineTextbox.Focused)
        // do something
    


  • Hallo,

    dies hab ich bereits schon versucht.
    Aber ich glaube sobald man auf den Button klickt, verliert die Textbox den Focus.

    Gruß,
    Sven



  • Verwende eines der Events textbox1.LostFocus oder textBox1.Leave und merke dir die zuletzt aktive textbox damit.



  • Chakuza schrieb:

    Aber ich glaube sobald man auf den Button klickt, verliert die Textbox den Focus

    Ja das ist auch so, zumindest scheint es mit ebenfalls so. Du könntest natürlich eine Variable definieren (global für die Form) welche die Information enthält welche TextBox als letztes Focused war.
    Eine einfache short Variable würde ja ausreichen (Wert 1 für TextBox1 und Wert 2 für Textbox2).
    Zu Anfnag beim laden der Form kannst du ja schonmal eine TextBox als Focus besimmen und die short Variable auf 1 setzen. Wenn du jetzt den Button klickst, erscheint der gewünschte Text auch auf TextBox eins:

    if(shFocu==1)
    {
        TextBox1.Text = "Hallo.";
    }
    else if(shFocus==2)
    {
        TextBox2.Text = "Tschau.";
    }
    else
    {
        //MessageBox mit Fehlermeldung
    }
    

    (shFocus is die Short Variable)

    Das dazu. Wenn du nun die TextBox2 auswählst ist natürlich das Problem das dies noch nicht geht. Wir haben ja zu Anfang nur gesagt das TextBox1 focused ist.
    Ich würde das so lösen indem man zu den TextBoxes einfach ein ClickEvent hinzufügt und wenn man halt in die Box reinklickt und sie somit focused, wird die Variable jeweils auf 1 oder 2 gesetzt.

    Ich gebe ehrlich zu ich experimentiere gerade wie das mit dem ClickEvent geht. Aber ich poste wenn ich es habe sofort die Lösung.

    Hoffe trotzdem das es ein wenig hilfreich war?

    MfG snowfey



  • Warum dieser Quatsch mit short?

    TextBox lastTextBox = null;
    
    textBox1.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
    textBox2.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
    textBox3.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
    
    void ForAlltextBoxes_LostFocus(object sender, EventArgs e)
    {
       lastTextBox = sender as TextBox;
    }
    

    Wie lastTextBox initialisiert wird, ist anwendungsabhängig.



  • Prinzessin Sofia schrieb:

    Warum dieser Quatsch mit short?

    TextBox lastTextBox = null;
    
    textBox1.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
    textBox2.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
    textBox3.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
             
    void ForAlltextBoxes_LostFocus(object sender, EventArgs e)
    {
       lastTextBox = sender as TextBox;
    }
    

    Wie lastTextBox initialisiert wird, ist anwendungsabhängig.

    Das mit dem Short war ja nur ne Idee 😉

    Ach, so funktioniert das mit dem LostFocus. Ich probier das gleich mal.


Anmelden zum Antworten