2012-03-12 29 views
0

我有3個不同的單選按鈕和一個標籤。無線電檢查時如何更新標籤上的文字?當收音機被選中時更新標籤文本

private void Button_Click(object sender, EventArgs e) 
    { 
     foreach (Control item in groupBox1.Controls) 
     { 
      if(item.GetType() == typeof(RadioButton)) 
      { 
       if (((RadioButton)item).Checked) 
       { 
        label1.text = obj[item.TabIndex-1].name; 
       } 

      } 

     } 
    } 

我寫了類似的東西,但它連接到按鈕,但我不希望它以這種方式工作。我想讓事件連接到所有3個單選按鈕,但我不知道該怎麼做。

+0

什麼_exactly_你不知道該怎麼辦?對單選按鈕附加一個事件處理程序?在事件處理程序中寫什麼? – Oded 2012-03-12 15:59:45

回答

4

你應該着眼於爲每個單選按鈕添加一個事件。具體來說,看看CheckedChanged事件。

protected void ARadioButton_CheckedChanged(object sender, EventArgs e) 
{ 
    if (sender is RadioButton) 
    { 
     RadioButton radioButton = (RadioButton)sender; 
     if (radioButton.Checked) 
     { 
      label.Text = ARadioButton.Text; 
     } 
} 

或者如Oded所述,使用相同的事件並利用sender參數。他們都會指向同一個事件。

//somewhere in your form object, probably InitializeComponent() 
ARadioButton1.CheckChanged += new EventHandler(ARadioButton_CheckedChanged); 
ARadioButton2.CheckChanged += new EventHandler(ARadioButton_CheckedChanged); 
ARadioButton3.CheckChanged += new EventHandler(ARadioButton_CheckedChanged); 

protected void ARadioButton_CheckedChanged(object sender, EventArgs e) 
{ 
    if (sender is RadioButton) 
    { 
     RadioButton radioButton = (RadioButton)sender; 
     if (radioButton.Checked) 
     { 
      label1.Text = "Clicked " + radioButton.Name; 
     } 
    } 
} 
+1

您可以將_same_事件處理程序附加到三個按鈕,並使用** sender參數(轉換爲正確的類型)。 – Oded 2012-03-12 16:09:24

+0

@Oded:更新了我的OP代碼,以反映出 – 2012-03-12 16:18:46

+0

雖然沒有一個例子檢查單選按鈕是否被選中... – Oded 2012-03-12 16:19:58

0
btn1.Click += Button_Click; 
btn2.Click += Button_Click; 
btn3.Click += Button_Click; 

然而,這是不是一個好方法,但我的回答是基於你的問題的評論:「我想打事件連接到所有3個單選按鈕,但我不知道該怎麼做。」

0

試試這個:

private void radioButton_CheckedChanged(object sender, EventArgs e) 
    { 
     var element = sender as RadioButton; 
     Debug.Assert(element != null, "element != null"); 
     if (element.Checked) 
     { 
      label1.Text = element.Name; 
     } 
    } 
0

首先,您需要定義將處理事件的方法。它可以完全像您上面的Button_Click方法,但您應該更改名稱,例如radioButton_CheckedChanged

接下來,當它們的選擇狀態改變時,您需要將此方法連接到由單選按鈕引發的事件。這應該在窗體的構造完成,後調用InitializeComponent()

radioButton1.CheckedChanged += new System.EventHandler (radioButton_CheckedChanged); 
    radioButton2.CheckedChanged += new System.EventHandler (radioButton_CheckedChanged); 
    radioButton3.CheckedChanged += new System.EventHandler (radioButton_CheckedChanged); 

更換radioButton1等你的無線電控制的名稱。

相關問題