я хочу знать, как переместить курсор от текущего текстового поля до предыдущего текстового поля. я создаю текстовое поле динамично, вводят событие нажатия клавиши один за другим
например.
textbox1
textbox2
textbox3
предположите общие три текстовых поля, теперь созданные, и нахожусь на третьих средствах текстового поля мой курсор на textbox3, и я хочу переместить курсор в textbox2, или фокус к textbox2 для изменяют.
как я делаю? предложите надлежащий код для того же.
Основываясь на решении Giorgi:
foreach(var tbox in new[]
{
tbox0, tbox1, tbox2
})
{
tbox.KeyPress += (sender,e) => keypressed(sender,e);
}
private void keypressed(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Back)
((Control)sender).GetNextControl((Control)sender, false).Select(); // .Focus()
}
Будьте осторожны, это не вызовет проблем с удобством использования, например, использование BACKSPACE для стирания последней буквы, также приведет к переходу к предыдущему элементу управления, что расстроит любого пользователя!
Элементы управления переходом только в том случае, если текущий управляющий текст пуст и пользователь нажал клавишу возврата:
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if ((e.KeyCode == Keys.Back) & (((Control)sender).Text.Length == 0))
{
this.SelectNextControl((Control)sender, false, true, true, true);
}
}
Если порядок табуляции установлен правильно, вы можете использовать метод GetNextControl для перехода к предыдущему элементу управления.
Backspace - важный ключ редактирования для пользователя, не делайте этого. Я с этим не связываюсь. Нажмите Tab, чтобы двигаться вперед, Shift + Tab, чтобы переместиться назад. Ваш пользователь, вероятно, уже знает этот ярлык.