Почему onKeyDown или onEditorKeyDown не могут захватить нажатие «Enter»? - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть пользовательский элемент управления MyLookUpEdit, он наследует Devexpress LookUpEdit.

В MyLookUpEdit у меня есть метод ниже:

protected override bool ProcessDialogKey(Keys keyData)

Я использую этот пользовательский элемент управления (давайте назовем его nameLookUpEdit) наформа.Когда я перемещаюсь по элементу управления, я вижу, что ProcessDialogKey вызывается, и он фокусируется на следующем элементе управления в соответствии с tabIndex.

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

protected override void OnKeyDown(KeyEventArgs e)

или

protected override void OnEditorKeyDown(KeyEventArgs e)

и захватить ключ ввода и, следовательно, явно вызвать ProcessDialogKey:

{
            if(e.KeyData == Keys.Enter)
            {
                ProcessDialogKey(Keys.Tab);
            }
            base....
        }

Но когда я тестирую его, я нахожу, что nameLookUpEdit в данный момент сфокусирован, я нажимаю клавишу ввода, и не вызывается ни onKeyDown, ни onEditorKeyDown.

Почему это происходит?

И что такоеправильно ли ввести поведение так же, как вкладка?

1 Ответ

0 голосов
/ 02 ноября 2011

попробовать переопределить ProcesscmdKey?

edit: добавлен оператор возврата для корректности.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Enter)
    {
        //do stuff
    }
    return base.ProcessCmdKey(ref msg, keyData);
}
...