2016-12-24 5 views
-3

ボタンのセットを作成し、ClickイベントとGotFocusイベントを添付しました。ボタントリガーイベントGotFocus repeatattly

for (int i = 0; i < NumberOfQuestion; i++) 
     { 
      RadButton button = new RadButton(); 
      // radButton1 
      // 
      button.Anchor = AnchorStyles.None; 
      button.Font = new Font("Segoe UI", 8.25F, FontStyle.Bold); 
      button.Location = new Point(65 * i + 15, 10); 
      button.Name = "btn_cauhoi" + (i + 1); 
      button.Size = new Size(60, 35); 
      button.TabIndex = 1 + i; 
      button.Text = "Câu " + (i + 1); 

      button.Tag = (i + 1); 

      button.Click += Button_Click; 
      button.GotFocus += Button_Click; ; 

      // 

      panel_nut_cauhoi.Controls.Add(button); 
     } 

    private void Button_Click(object sender, EventArgs e) 
    { 
     var button = (RadButton)sender; 
     var index = (int)button.Tag; 
     MessageBox.Show(index.ToString()); 
    } 

クリックイベントは正しくトリガーされますが、GotFocusイベントではトリガーが繰り返しトリガーされます。

誰かが私を助けてください。

ありがとうございます。

+1

クリックハンドラーをgotfocusに割り当てるのはなぜですか? – CodingYoshi

+0

私は同じ仕事がそれらのイベントによって処理されることを望む!ループ内で何回GotFocusイベントがトリガされるので、 –

+0

は問題ではありませんか? NumberOfQuestion変数と同じように推測させてください。もちろんはい。 –

答えて

1

メッセージボックスで[OK]をクリックすると、フォーカスがゆるんでフォーカスが再び得られます。 MessageBox.Show()を削除した場合、1回だけトリガされるので、以下のようなコードをテストすることができます。ボタンの名前はbtn_cauhoi1またはbtn_cauhoi2またはbtn_cauhoi3と表示されます。それは1回だけトリガすることを意味します。

 var button = (RadButton)sender; 
     var index = (int)button.Tag; 
     //MessageBox.Show(index.ToString()); 
     this.Text = button.Name; 
+0

私はそれを試し、私はデバッグモードで環境を設定します。それはまだそのイベントを繰り返しトリガする(約20回) –

+0

心配しないでください、フォーカスイベントをデバッグするのは難しいです。デバッグモードとEXEの間で切り替えると、イベントが再度トリガされるためです。 –

+0

私は本当にわかりません、なぜあなたはこのイベントが必要です。おそらく "Enter"イベントを使用するinszeadはあなたの問題を解決します。 –

関連する問題