2009-08-16 11 views
0

私はC言語でプログラムを作成しています。ユーザーが\キーボードボタンを押したときを知りたいのですがキーボード)。
どうすればいいですか?.NET、キーボードボタンが押されているときに「知っている」

+1

十分な情報を提供していません。それはGUIまたはコンソールアプリケーションですか? GUI、WPF、またはWindowsフォームの場合 –

+0

申し訳ありませんが、それはWindowsフォームです。 –

+0

実際にはWindowsフォーム+ GUIです。 –

答えて

4

Control.KeyPressイベント(および関連するKeyDownおよびKeyUp)は、必要な処理を行う必要があります。ちょうどあなたがあなたのフォームに必要がある1つのイベントハンドラを定義:

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

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

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

+0

KeyPressイベントは、文字以外のキーでは発生しません。ただし、非文字キーはKeyDownおよびKeyUpイベントを発生させます。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(VS.80).aspx – RvdK

+0

1-9は文字キーですが、これは彼が求めていたものです。 – Thorarin

+0

私の悪い、1-9私に非文字キーと思われた – RvdK

0

フォームのOnKeyUpイベントに関数をフックします。あなたが検索何 see here

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 
    } 
} 
0

は2つのイベントのKeyDownとkeyUpイベントです。

KeyUpは、キーが押され、ユーザーが指を持ち上げたときです。 KeyDownは他のイベントです。

ただ新しいフォームを作成してください。イベント(F4キーを押す)に移動すると、KeyDownとUpが表示されます。その上

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

と:D

2

イベントを受信します(あなたは、フォーム上の他のコントロールを持っている場合)フォームに真、それ以外の他のコントロールにKeyPreviewのプロパティを設定することを忘れないでください。 (フォームにフォーカスがある場合)フォームが取得されます。

+0

+1:非常に、非常に重要。 –

関連する問題