たくさんのコントロールを持つ Windows フォームがあります。矢印キーなど、任意のキーがクリックされるたびに、イベントを発生させたいと考えています。問題はコードではありません。問題は、コントロールにタブ インデックスがあるため、矢印キーをクリックするたびにカーソルが別のコントロールに移動することです。これは望ましくありません。
1717 次
3 に答える
2
いくつかのテストの後、私は見つけました
protected override bool ProcessDialogKey(Keys keyData)
{
return false;
}
これにより、矢印キー(およびタブ)が通常のKeyDownイベントとして配信されます。これにより、通常のダイアログキー機能(タブキーや矢印キーなど)も停止しますが、KeyDownイベントは発生します。
于 2013-01-25T21:45:55.510 に答える
2
現在のフォームにアクティブなコントロールがないことを確認する必要があります。このコードを Form.cs に入れます
this.ActiveControl = null;
于 2013-01-25T21:43:50.480 に答える
2
各コントロールの KeyDown イベントを同じハンドラーにアタッチします。
Control.KeyDown+=new KeyEventHandler(Control_KeyDown);
private void Control_KeyDown(object sender, KeyEventArgs e)
{
//trap here and handle
if(e.KeyCode == Keys.Left || e.KeyCode == Keys.Right || e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
e.Handled = true;
}
于 2013-01-25T21:42:15.877 に答える