Sunday, August 03, 2008

Visual C# - キー入力処理メモ

フォーム上であるコントロール(例:textbox)にフォーカスを当てたとき,キーボードのキーを押すとKeyDown,KeyPress, KeyUpイベントはそのコントロールにのみ渡される.textboxにフォーカスがあるとき,キーボードの"→"ボタンを押すとカーソルが右に移動するだけ.このキーイベントを受け取って処理を行うにはフォームのKeyPreviewプロパティをTrueにし,これでキーイベントはすべてフォームが受け取って,処理が終了してからフォーカスおあるコントロールにわたされるようになる.またイベント処理メソッドの引数であるパラメータe (System.Windows.Forms.KeyEventArgs)のHandledプロパティをTrueにすると,フォーカスのあるコントロールにキーイベントを渡さないようにすることができる.
確認コード:

private void Button1_Click(object sender, System.EventArgs e)
{
//Change KeyPreview property
this.KeyPreview = !this.KeyPreview;
textbox2.Text = this.KeyPreview.ToString();
}

private void Form1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e)
{
//Which key?
textBox1.Tex = e.KeyCode.ToString();
}

No comments: