2

我在 WinForms 应用程序的 ListView 控件中捕获Ctrl+击键时遇到问题。PageUp

我正在使用此代码来捕获击键 -

private void ListViewEx_KeyDown(object sender, KeyEventArgs e)
{
...
if(e.Control){
if((e.KeyCode ^ Keys.Left) == 0)
    MessageBox.Show("Left"); //shows messagebox
else if((e.KeyCode ^ Keys.PageUp) == 0)
    MessageBox.Show("PageUp"); //does not
...
}

我是否需要深入 WndProc 来处理这个密钥?谢谢。


编辑:我发现这可行,问题在于在 ListControl 处理这些键之前将 TabControl 封装起来。

4

3 回答 3

4

不需要 WndProc:

if ((e.Modifiers & ModifierKeys) == Keys.Control && e.KeyCode == Keys.PageUp)
{
    // ctrl + page up was pressed
}
于 2010-03-29T07:18:34.787 回答
4

e.KeyData 参数包括修饰键。让它看起来像这样:

  if (e.KeyData == (Keys.Control | Keys.PageDown)) {
    // Do your stuff
    Console.WriteLine("Ctrl+PgDn");
  }
于 2010-03-29T07:58:59.603 回答
2

检查

Keys.Control | Keys.PageUp
于 2010-03-29T07:18:34.557 回答