Перейти к предыдущему текстовому полю из текущего, нажав клавишу Backspace - PullRequest
0 голосов
/ 04 августа 2010

Я хочу знать, как переместить курсор из текущего текстового поля в предыдущее. я создаю текстовое поле динамически путем ввода события нажатия клавиши один за другим

, например

TextBox1

TextBox2

textbox3

предположим, что всего три текстовых поля теперь созданы, а я на третьем текстовом поле означает, что мой курсор на textbox3, и я хочу переместить курсор на textbox2 или сосредоточиться на textbox2 для изменения.

как мне это сделать? пожалуйста, предложите правильный код для того же.

Ответы [ 4 ]

2 голосов
/ 04 августа 2010

на основе решения Георгия :

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()
}
2 голосов
/ 04 августа 2010

Будьте осторожны, это не вызовет проблем с юзабилити, как, например, использование BACKSPACE для удаления последней буквы, также перейдет к предыдущему элементу управления, что разочарует любого пользователя!управляющий текст пуст, и пользователь нажал клавишу 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);
        }
    }
1 голос
/ 04 августа 2010

Backspace является важным ключом редактирования для пользователя, не связывайтесь с ним.Нажмите Tab для перемещения вперед, Shift + Tab для перемещения назад.Ваш пользователь, вероятно, уже знает этот ярлык.

1 голос
/ 04 августа 2010

Если порядок вкладок установлен правильно, вы можете использовать метод GetNextControl для перемещения, чтобы найти предыдущий элемент управления.

...