Entwickler-Ecke

WinForms - Focus weitergeben


vreden123 - Fr 24.12.10 18:03
Titel: Focus weitergeben
Hallo,

nach dem starten von meinem Programm bekommt eine Textbox direkt den Focus.
Wie kann ich es machen das beim drücken der Eingabetaste der Focus zu einer anderen textbox geht?


xToast - Fr 24.12.10 18:25


C#-Quelltext
1:
2:
3:
4:
5:
private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '\n' || e.KeyChar == '\r' ) //Bin mir da grad nicht sicher, aber so müsste es sein. Was besseres als KeyChar fällt mir grad nicht ein.
        textbox2.Focus();
}


So müsste es gehen, ist aber ungetestet.


vreden123 - Fr 24.12.10 18:42

Die Funktion variable.KeyChar gibt es in C# nicht.
Die lautet dann variable.KeyPress aber das klappt leider nicht wenn ich das passend ersetze :-)


Trashkid2000 - Sa 25.12.10 10:05

Hallo,

nehme mal lieber das "KeyDown"-Event der TextBox dafür, da Du dort in der Lage bist, den Key abzufragen und vor allen Dingen auch abzufangen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
  if (e.KeyCode == Keys.Return)
  {
    e.SuppressKeyPress = true//verhindert, dass der Key(Enter) an die TextBox weitergegeben wird
    e.Handled = true;
    textBox2.Focus();
  }
  else
    e.Handled = false;
}
Marko


vreden123 - Sa 25.12.10 13:08

Hallo,

wenn ich aber ein Doppelklick auf die Textbox mache kommt nur:


C#-Quelltext
1:
2:
3:
4:
private void txt_suche_TextChanged(object sender, EventArgs e)
        {

        }


und wenn ich daraus


C#-Quelltext
1:
2:
3:
4:
private void txt_suche_KeyDown(object sender, KeyEventArgs e)
        {

        }


mache,klappt das nicht.

Er mekert das eine Using-Direktive oder Assemblyverweis fehlt.

Woran kann das liegen?

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Trashkid2000 - Sa 25.12.10 13:21

Der TextChanged-EventHandler ist der, der per Default erstellt wird, wenn man im Designer einen Doppelklick auf eine TextBox macht. Um einen Handler für ein anderes Event anzulegen, muss man dies entweder selber im Code vornehmen

C#-Quelltext
1:
this.textBox1.KeyDown += new KeyEventHandler(this.textBox1_KeyDown);                    
, oder aber Du machst das mit dem Designer. Wähle dazu mal die TextBox aus und gehe dann zu den Eigenschaften der TextBox. Oben im Eigenschaftenfenster hast Du ein kleines Icon mit einem Pfeil (Ereignisse). Klicke mal darauf, und du bekommst alle Events aufgelistet, die das Steuerelement feuert. Wenn Du nun in das Feld neben dem Event, für das Du einen Eventhandler erstellen willst, einen Doppelklick machst, so wird der Handler erzeugt und für das Event registriert. Oder wenn Du den Handler schon erstellt hast, und ihn nur noch registrieren willst, so kannst Du ihn auch in dem DropDown-Menü dort auswählen.
Marko


vreden123 - Sa 25.12.10 23:45

Ich habe das jetzt so gemacht aber bei:

KeyEventHandler

wird immmer noch gemekert das eine Using-Direktive oder Assemblyverweis fehlt.