我有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 :(得分: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 :(得分:0)
btn1.Click += Button_Click;
btn2.Click += Button_Click;
btn3.Click += Button_Click;
然而,这不是一个好方法,但我的回答是基于你的问题评论“我想让事件连接到所有3个单选按钮,但我不知道该怎么做。”
答案 2 :(得分: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;
}
}
答案 3 :(得分: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
等替换为无线电控件的名称。