0

私はC#でプログラムを作成していますが、ユーザーがキーボードボタン(今のところ:キーボードの1〜9個のボタン)を押しているときを知りたいです。
どうすればいいですか?

4

4 に答える 4

4

Control.KeyPressイベント (および関連するKeyDownおよびKeyUp) は、必要なことを行う必要があります。フォームで必要なイベント ハンドラーを定義するだけです。

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show("Key pressed: " + e.KeyChar);
}

リンクの下のMSDNページには、「特別な」キーを扱うより広範な例があります(それらにはKeyPressまたはを使用する必要がありますKeyDown)。

フォーカスがフォームにないときにキーをキャプチャしたい場合、それはまったく別の問題ですが、キー 1 ~ 9 をキャプチャしたいので、そうではないと思います。典型的なグローバルホットキーではありません:)

于 2009-08-16T12:46:10.587 に答える
2

KeyPreviewプロパティを trueに設定することを忘れないでください。そうしないと、フォームの他のコントロール (フォームに他のコントロールがある場合) が、フォームがイベントを取得する前に (それらにフォーカスがある場合) イベントを受け取ります。

于 2009-08-16T13:53:11.163 に答える
0

関数をフォームの OnKeyUp イベントにフックします。 ここを参照

private void form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if ((e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9) || (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9))

    {
        //Do something
    }
}
于 2009-08-16T12:47:58.230 に答える
0

検索するのは、KeyDown と KeyUp の 2 つのイベントです。

KeyUp は、キーが「押され」、ユーザーが指を離したときです。KeyDown はもう 1 つのイベントです。

新しいフォームを取るだけです。イベント (F4 キーを押す) に移動すると、KeyDown と Up が表示されます。

    private void maskedTextBox1_KeyDown_1(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)

など:D

于 2009-08-16T12:48:24.657 に答える