2012-03-12 8 views
0

私は3つのラジオボタンと1つのラベルを持っています。ラジオがチェックされているときにそのラベルのテキストを更新するには?ラジオがチェックされているときにラベルテキストを更新します

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_どのようにするかわからないのですか?ラジオボタンにイベントハンドラを添付しますか?何を書き込むのですか?_in_イベントハンドラ? – Oded

答えて

4

各ラジオボタンにイベントを追加する必要があります。具体的には、CheckedChangedイベントをご覧ください。

また、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_イベントハンドラを3つのボタンにアタッチすることができます。そして** ** 'sender'パラメータを使用します(正しいタイプにキャスト)。 – Oded

+0

@Oded:あなたのサンプルのどれもがラジオボタンがチェックされているかどうかチェックしていませんが、 –

+0

を反映するようにOPのコードを更新しました... – Oded

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などを交換してください。

関連する問題