Hi ihr 😃
Ich habe auf einem Form mehrere Textboxen, nun möchte ich folgendes einbauen um die Benutzerfreundlichkeit meines Programms zu erhöhen.
Ich möchte das wenn jmd die Enter Taste innerhalb einer textbox drückt, dann die nächste Textbox ausgewählt wird. Das habe ich so realisiert:
private void textBoxName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == ('\r'))
{
textBoxVorgang.Select();
}
}
Allerdings müsste ich diesen Code jetzt für jede TextBox schreiben und immer den Nachfolger per Hand ändern, gibt es da einen Befehl der automatisch den Tab ausführt?
Gruß Martin
Versuch mal GetNextControl() 😃 - müsstest dann nur prüfen, ob das Control wirklich das gewählte sein soll.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Hallo inflames2k,
danke für den Tipp. Der zweite Parameter ist klar, aber wie kann ich den ersten auf mein aufrufendes Objekt setzten?
Schau dir mal die NextControl() Methode an. Du kannst also jede Textbox an ein und das selbe callback binden, und dann dort einfach immer das nächste Control fokusieren.
Again what learned...
Hier mal ein funktionierender Codeausschnitt. Wollt dir zwar eigentlich nur den Ansatz zeigen, aber wegen 3 Zeilen, mach ich da jetzt keinen Hehl draus.
Soll es für alle Controls gelten, kannst du die If abändern.
if (e.KeyChar == '\r')
{
// get the next control in the controlcollection
// and focus it
Control ctrl = GetNextControl(sender as Control, true);
if(ctrl != null && ctrl.GetType() == typeof(TextBox))
ctrl.Focus();
}
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Nur eine Sache am Rande: Das Weiterrücken in der Eingabe per ENTER ist etwas, das Excel-verwöhnte Anwender gerne haben möchten. Meiner Erfahrung nach bringen die Anwender TAB und ENTER dann allerdings schnell durcheinander. Sie müssen in jeder Windows-Anwendung überlegen, welche Taste welche Funktion auslöst. Also wir haben das wieder ausgebaut.
Da hast du natürlich vollkommen Recht, im normal Fall gilt Enter in Anwendungen für den Druck auf den Standartbutton (z.B. OK), bzw. zur Bestätigung einer Eingabe.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Ihr habt mich überzeugt.
Ich werd die Funktion doch weglassen.
Danke für die Infos.
Gruß,
Martin