选中收音机时更新标签文本

本文关键字:标签 文本 更新 收音机 | 更新日期: 2023-09-27 18:27:35

我有三个不同的单选按钮和一个标签。当选中收音机时,如何更新该标签上的文本?

    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个单选按钮,但我不知道如何做到这一点。

选中收音机时更新标签文本

您应该为每个单选按钮添加一个事件。具体来看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;
        }
    }
}
btn1.Click += Button_Click;
btn2.Click += Button_Click;
btn3.Click += Button_Click;

然而,这不是一个好方法,但我的答案是基于您的问题评论"我想让事件连接到所有3个单选按钮,但我不知道如何做到这一点。"

试试这个:

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;
        }
    }

您首先需要定义将处理事件的方法。它可以与上面的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等替换为收音机控件的名称。