私はC#でプログラムを作成していますが、ユーザーがキーボードボタン(今のところ:キーボードの1〜9個のボタン)を押しているときを知りたいです。
どうすればいいですか?
4 に答える
Control.KeyPress
イベント (および関連するKeyDown
およびKeyUp
) は、必要なことを行う必要があります。フォームで必要なイベント ハンドラーを定義するだけです。
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show("Key pressed: " + e.KeyChar);
}
リンクの下のMSDNページには、「特別な」キーを扱うより広範な例があります(それらにはKeyPress
またはを使用する必要がありますKeyDown
)。
フォーカスがフォームにないときにキーをキャプチャしたい場合、それはまったく別の問題ですが、キー 1 ~ 9 をキャプチャしたいので、そうではないと思います。典型的なグローバルホットキーではありません:)
KeyPreviewプロパティを trueに設定することを忘れないでください。そうしないと、フォームの他のコントロール (フォームに他のコントロールがある場合) が、フォームがイベントを取得する前に (それらにフォーカスがある場合) イベントを受け取ります。
関数をフォームの 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
}
}
検索するのは、KeyDown と KeyUp の 2 つのイベントです。
KeyUp は、キーが「押され」、ユーザーが指を離したときです。KeyDown はもう 1 つのイベントです。
新しいフォームを取るだけです。イベント (F4 キーを押す) に移動すると、KeyDown と Up が表示されます。
private void maskedTextBox1_KeyDown_1(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
など:D