Как прервать клавишу TAB получения в приложении WinForms?

Я пытаюсь получить клавишу Tab в приложении Windows Forms и сделать пользовательское действие, когда она нажимается.

У меня есть Форма с несколькими listViews и кнопками, я установил свойство Form's KeyPreview на истинный и когда я нажимаю любую другую клавишу, чем вкладка, мой обработчик событий KeyDown действительно становится названным.

Но это не верно с клавишей Tab - я не получаю сообщение WM_KEYDOWN даже в WndProc.

Я должен установить каждое управление в своей форме - ее свойстве TabStop - ко лжи? Должен быть более изящный путь, чем это.

Спасибо.

11
задан Jeff 9 June 2014 в 14:36
поделиться

2 ответа

поможет ли вам это?

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
  Dim keyPressed As Keys = CType(msg.WParam.ToInt32(), Keys)

  Select Case keyPressed
    Case Keys.Right msgbox("Right Arrow Key Caught")
    Case Keys.Left msgbox("LeftArrow Key Caught")
    Case Keys.Up msgbox("Up Arrow Key Caught")
    Case Keys.Down msgbox("Down Arrow Key Caught")
    Case Else Return MyBase.ProcessCmdKey(msg, keyData)
  End Select
End Function 
9
ответ дан 3 December 2019 в 01:08
поделиться

Это код C #, аналогичный коду VB, приведенному в ответе выше ...

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Tab)
        {
            //your code
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

Надеюсь, это поможет ...

30
ответ дан 3 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: