选中收音机时更新标签文本
本文关键字:标签 文本 更新 收音机 | 更新日期: 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
等替换为收音机控件的名称。