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 に答える