2015-09-02 84 views
0

我正在使用窗體窗體創建一系列單選按鈕programmaticaly。我想創建一個事件,記錄已經選擇了這些無線電之一,如果有,我啓用「確定」按鈕。Windows Form C#「MouseClick」事件在單擊單選按鈕時不會觸發

我有我的事件處理...

 protected void Checked_Changed(Object sender, EventArgs e) 
    { 
     foreach (Control c in this.Controls) 
     { 
      if (c is RadioButton) 
      { 
       RadioButton r = (RadioButton)c; 
       if (r.Checked) 
       { 
        this.OK.Enabled = true; 
       } 
      } 
     }    
    } 

但是!問題是我似乎不知道我應該尋找什麼事件來觸發此處理程序

我嘗試使用

  • 點擊
  • 鼠標點擊
  • 的MouseUp

     this.Click += new System.EventHandler(this.Checked_Changed); 
    

..事件,但,如果我對什麼,但單選按鈕點擊它只能

我希望你們能幫助我。萬分感謝, 傑克。

+1

很模糊,你清楚做錯了。 「this.Click」是正確的機率非常接近於零。這聽起來像表單的Click事件,而是訂閱單選按鈕的CheckChanged事件。他們全部。 –

回答

2

您正在將您的點擊事件處理程序分配給Form,而不是單選按鈕。

以下是以編程方式創建單選按鈕並分配事件處理程序的示例。

private void Form1_Load(object sender, EventArgs e) 
{ 
    // Create radio buttons 
    RadioButton rb1 = new RadioButton(); 
    RadioButton rb2 = new RadioButton(); 
    RadioButton rb3 = new RadioButton(); 

    // Positioning on form 
    rb1.Left = 10; 
    rb2.Left = 10; 
    rb3.Left = 10; 
    rb1.Top = 10; 
    rb2.Top = 30; 
    rb3.Top = 50; 

    // Assign event handler 
    rb1.CheckedChanged += new EventHandler(RadioCheckChanged); 
    rb2.CheckedChanged += new EventHandler(RadioCheckChanged); 
    rb3.CheckedChanged += new EventHandler(RadioCheckChanged); 

    // Add to form 
    this.Controls.Add(rb1); 
    this.Controls.Add(rb2); 
    this.Controls.Add(rb3); 
} 

private void RadioCheckChanged(object sender, EventArgs e) 
{ 
    // Enable button here 
} 
1

您使用this.Click,你需要使用this.radioButton.CheckedChanged.Click或任何你正在使用的事件,否則你訂閱的形式,而不是單選按鈕

this.radioButton.CheckedChanged += new System.EventHandler(this.Checked_Changed); 
相關問題