Forum: VB.NET |
Thema:
AW: Tastenabfrage |
Von:
Thomas Hauser (
10.10.2007 23:30) |
Hi,
Du kannst das lösen, indem Du von jedem hinzugefügten Control das KeyDown-Ereignis behandelst. Das machst Du einfach, indem Du die OnControlAdded-Methode der Form überschreibst:
protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
e.Control.KeyDown += new KeyEventHandler(ControlKeyDown);
}
Dann noch die Behandlungsroutine für das Ereignis:
void ControlKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter &&
!(sender is TextBox && (((TextBox)sender).AcceptsReturn
|| ((TextBox)sender).Multiline)))
{
base.SelectNextControl((Control)sender, true, true, true, true);
e.SuppressKeyPress = true;
}
}
Ich führe den das "Auswählen des nächsten Controls in der Aktivierreihenfolge nur dann aus, wenn die Enter-Taste gedrückt wurde und wenn es sich nicht um eine Textbox handelt, die AcceptReturn oder Multiline ist. Wäre bei mehrzeiligen Textboxen ziemlich unpraktisch.
Natürlich muss die Aktivierreihenfolge der Form richtig gesetzt sein, damit dann auch wirklich das "nächste" Steuerelement ausgewählt wird.
Grüße,
Thomas
Thomas Hauser (Trainer und Consultant, Blog: http://thomashauser.spaces.live.com, Forum: http://www.sharepointbook.de - Die Forum-Webseite zum Buch!)
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!