コントロールへのキーボード入力を無効にすることは可能ですか?たとえばListView
?それ、どうやったら出来るの?KeyUp
KeyDown
イベントをオーバーライドしようとしましたが、どうやらそれは方法ではありませんでしたか?
IsEnabled
は良い解決策ですが、キーボードの操作を無効にして、マウスの操作をそのままにしておきたいだけです。
コントロールへのキーボード入力を無効にすることは可能ですか?たとえばListView
?それ、どうやったら出来るの?KeyUp
KeyDown
イベントをオーバーライドしようとしましたが、どうやらそれは方法ではありませんでしたか?
IsEnabled
は良い解決策ですが、キーボードの操作を無効にして、マウスの操作をそのままにしておきたいだけです。
イベントの処理KeyDown
は遅すぎますが、PreviewKeyDownイベントを処理できるため、探している動作が得られるはずです。
private void MyListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
}
親愛なるマシエック、あなたがする必要がある唯一の泥棒は、OnKeyDownイベントを使用することです。
private void txtInput_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = true; // user can input
e.Handled = false; // user cannot input
}
KeyDownは、次のことを行うと、通常は機能します。
e.Handled = true;
e.SuppressKeyPress = true;
実用的なアプリケーションを使用したより完全な例(数字以外の文字からの入力を無効にする):http ://cccontrols.codeplex.com/SourceControl/changeset/view/34146#611536
ジョンはしかし良い点を述べています。Control
設定されていないがEnabled
=との相互作用を無効にしたい理由はfalse
何ですか?
編集: WPFタグに気づきました。私はWPFが嫌いなので、私の答えはもうわかりません;-)
これが、WebControl.Enabled = false;
ユーザー入力に応答しないようにすることを目的としています。
編集:質問が変更されたので、コントロールを無効にすることはもはや解決策ではありません。ただし、キーボードではなくマウスのクリックに応答するコントロールはバグがあると思います。誰もがマウスの使用を好むわけではありません。
KeyPressEventArgs.Handled
:KeyPressイベントが処理されたかどうかを示す値を取得または設定します。
Boolean
true
イベントが処理される場合のプロパティ値
。それ以外の場合、false
。
を設定するe.Handled = true
と、キーボードイベントはディスパッチされなくなります。