|  | 分類:[C#]
 
 はじめまして。なかなかうまく出来ないので
 こちらでお力をお借りしたいと思い、質問します。
 
 
 テキストボックスが1〜3、ボタン1〜2がある状態で
 テキストボックスにフォーカスがある時に
 ボタン1をクリックするとテキストボックスの内容を表示し、
 ボタンにカーソルがある時は、ボタン1をクリック、ショートカットキーでは
 何も表示しないようなプログラムを作りたいのですがどうしたらいいのでしょうか?
 
 
 
 bool focusText;         // 今のフォーカスがテキストボックスにある
 bool beforeFocusText;   // 前のフォーカスがテキストボックスにあった
 
 /// <summary>
 /// コントロールが入力されると発生
 /// </summary>
 private void Enter1(object sender, EventArgs e)
 {
 if (sender.GetType() == typeof(TextBox))
 {
 focusText = true;
 }
 else if (sender.GetType() == typeof(Button))
 {
 focusText = false;
 }
 }
 
 
 /// <summary>
 ///  入力フォーカスがコントロールを離れると発生
 /// </summary>
 private void Leave1(object sender, EventArgs e)
 {
 if (sender.GetType() == typeof(TextBox))
 {
 beforeFocusText = true;
 
 }
 else if (sender.GetType() == typeof(Button))
 {
 
 beforeFocusText = false;
 }
 }
 
 /// <summary>
 ///  ボタン1クリックすると発生
 /// </summary>
 private void button1_Click(object sender, EventArgs e)
 {
 if (focusText)  // フォーカスがテキストにある時
 {
 MessageBox.Show("ショートカット");
 }
 else // ボタンを押した時
 {
 if (beforeFocusText)
 {
 MessageBox.Show("ボタンクリック");
 }
 else
 {
 MessageBox.Show("無効"); // ボタンにフォーカスがある時
 }
 }
 }
 
 /// <summary>
 /// F7を押すと発生
 /// </summary>
 private void Form1_KeyDown(object sender, KeyEventArgs e)
 {
 if (e.KeyCode == Keys.F7)
 {
 button1_Click(sender, e);
 }
 }
 
 
 これでは、テキスト3からボタン1にTab等でボタンにフォーカス移動した時に
 ボタン1をクリックすると、ボタンクリックした事になってしまいます。
 アドバイスお願い致します。
 
 |