Вы можете добавить ко всем текстовым полям в пользовательском элементе управления событие KeyDown
, которое перехватывает Enter
и отправляет фокус в следующем текстовом поле в порядке табуляции:
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
Control textbox = sender as TextBox;
if (textbox != null) // Safety check
{
if (e.KeyCode == Keys.Enter)
{
// Check if next control is a text-box and send focus to it.
Control nextControl = GetNextControl(textbox, true);
if (nextControl is TextBox)
{
SelectNextControl(textbox, true, true, false, false);
}
}
}
}
Чтобы избежать подписки на события, предлагаемой Пассантом Ганса , вы можете переопределить ProcessCmdKey
:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
Control control = ActiveControl as TextBox;
if (control != null) // Safety check
{
if (keyData == Keys.Enter)
{
// Check if next control is a text-box and send focus to it.
Control nextControl = GetNextControl(control, true);
if (nextControl is TextBox)
{
SelectNextControl(control, true, true, false, false);
}
}
}
return base.ProcessCmdKey(ref msg, keyData);
}