Windows フォームで独自のコントロールを実装しています。これはツリービューなので、ナビゲーション キーを実装する必要があります。矢印、ページ アップ/ダウン、および複数選択を処理するためのシフトとコントロールとの組み合わせです。
最近、Ctrl + PageUp/PageDown の組み合わせが奇妙なことをすることを発見しました。主に、OnKeyDown をトリガーしません (ControlKey のみがキャプチャされます)。さらに、マウスでコントロールをクリックするまで、他のキーはキャプチャされません (フォーカスを失ったように見えます)。IsInputKey を実装しました。
protected override bool IsInputKey(Keys keyData)
{
// Capture arrow keys
if ((keyData & (Keys.Up | Keys.Down | Keys.Left | Keys.Right |
Keys.PageDown | Keys.PageUp | Keys.ControlKey | Keys.Control)) != 0)
return true;
else
return base.IsInputKey(keyData);
}
OnKeyDown ハンドラには特別なことはありません。
何が起こっている?