Нажатие вкладки перемещается на один после следующего элемента управления - PullRequest
0 голосов
/ 27 августа 2018

Я пишу простое приложение wpf c # для обработки данных в базе данных. Функция, которая динамически генерирует ComboBox и Textbox, выполняется из Main TextBox при нажатии клавиши табуляции. Теоретически предполагается переключить фокус на следующий элемент управления, то есть вновь созданный ComboBox. Вместо этого при выполнении он перемещается к последнему сгенерированному TextBox. ниже приведен код, который я реализовал.

Используемый код:

private void Add_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
{
    // insert generation code here
}

Вышеуказанная функция вызывается при нажатии клавиши Tab через это:

private void MainTextbox_KeyDown(object sender, KeyEventArgs e)
{
    if(e.Key == Key.Tab)
    {
        Add_PreviewMouseDown(null, null);
    }
}

Возможные причины:

Я думаю, что проблема может заключаться в задержке между нажатием клавиши табуляции и процессом создания элементов управления. Есть мысли?

1 Ответ

0 голосов
/ 27 августа 2018

Вместо написания собственного обработчика ключей, попробуйте переопределить существующий:

using System.Windows.Input;

//Later on:
protected override void OnKeyDown(KeyEventArgs e)
{
     base.OnKeyDown(e);
     if (e.Key == System.Windows.Input.Key.Tab)
     {
          //Handle the tab key
     }
}

Вам может понадобиться или не потребоваться база. OnKeyDown (e); причина это, вероятно, то, что вызывает поведение табуляции по умолчанию: А именно, чтобы сместить фокус на следующий элемент пользовательского интерфейса в вашем приложении, например. следующее текстовое поле.

Поэтому вы можете попробовать что-то вроде:

protected override void OnKeyDown(KeyEventArgs e)
{
     if (e.Key != System.Windows.Input.Key.Tab)
     {
          base.OnKeyDown(e); //Default behavior for all other keys
     }else{
          //Custom behavior for the tab key
     }
}

Надеюсь, это поможет: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...