5

コントロールへのキーボード入力を無効にすることは可能ですか?たとえばListView?それ、どうやったら出来るの?KeyUp KeyDownイベントをオーバーライドしようとしましたが、どうやらそれは方法ではありませんでしたか?

IsEnabledは良い解決策ですが、キーボードの操作を無効にして、マウスの操作をそのままにしておきたいだけです。

4

5 に答える 5

14

イベントの処理KeyDownは遅すぎますが、PreviewKeyDownイベントを処理できるため、探している動作が得られるはずです。

private void MyListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
   e.Handled = true;
}
于 2010-02-09T15:59:30.470 に答える
5

親愛なるマシエック、あなたがする必要がある唯一の泥棒は、OnKeyDownイベントを使用することです。

private void txtInput_KeyDown(object sender, KeyEventArgs e)
    {
            e.Handled = true; // user can input
            e.Handled = false; // user cannot input
    }
于 2010-02-08T11:51:42.183 に答える
2

KeyDownは、次のことを行うと、通常は機能します。

e.Handled = true;
e.SuppressKeyPress = true;

実用的なアプリケーションを使用したより完全な例(数字以外の文字からの入力を無効にする):http ://cccontrols.codeplex.com/SourceControl/changeset/view/34146#611536

ジョンはしかし良い点を述べています。Control設定されていないがEnabled=との相互作用を無効にしたい理由はfalse何ですか?

編集: WPFタグに気づきました。私はWPFが嫌いなので、私の答えはもうわかりません;-)

于 2010-02-08T08:26:05.990 に答える
1

これが、WebControl.Enabled = false;ユーザー入力に応答しないようにすることを目的としています。

編集:質問が変更されたので、コントロールを無効にすることはもはや解決策ではありません。ただし、キーボードではなくマウスのクリックに応答するコントロールはバグがあると思います。誰もがマウスの使用を好むわけではありません。

于 2010-02-08T08:25:12.920 に答える
0

KeyPressEventArgs.Handled:KeyPressイベントが処理されたかどうかを示す値を取得または設定します。

Boolean trueイベントが処理される場合のプロパティ値 。それ以外の場合、false

を設定するe.Handled = trueと、キーボードイベントはディスパッチされなくなります。

于 2019-04-19T10:28:14.023 に答える