日期:2014-05-18  浏览次数:20985 次

groupbox中多个radiobox的传值问题
一个groupbox中,有七八个RadioBox,我想顺序点击之,在外面的一个label的Text显示1、2、3、4、5...等顺序的数字

我目前知道就一个一个的RadioBox的Click事件等可以写

但是RadioBox很多,GroupBox也有好几十个,想请问下什么办法可以较为简洁和快速一点来做这件事,谢谢

------解决方案--------------------
所有的RadioBox绑定到同一个click,然参数sender,就是点击的RadioBox,转换用((RadioBox)sender).xxxx,你可以在每个RadioBox的tag中保留1,2,3等,或者用一个变量表示点击顺序
------解决方案--------------------
界面上拖好 RadioBox 之后,在后台代码中绑定事件
C# code
foreach (var it1 in this.Controls)
{
    GroupBox gbx;
    if ((gbx = it1 as GroupBox) != null)
    {
        foreach (var it2 in gbx.Controls)
        {
            RadioButton rbtn;
            if ((rbtn = it2 as RadioButton) != null)
            {
                rbtn.Click += new EventHandler(rbtn_Click);
            }
        }
    }
}

private void rbtn_Click(object sender, EventArgs e)
{
    RadioButton rbtn = (RadioButton)sender;
    // 界面上设置每个 RadioButton 的 Tag 或 Name 等属性来区分在 label 里显示不同内容
}

------解决方案--------------------
第一:
 
foreach (Control ctrl in groupBox1.Controls)
{
if (ctrl is RadioButton)
{
if (((RadioButton)ctrl).Checked )
{
//添加你需要的操作

}
}
}
第二:
 
在每个radiobutton里面添加事件
 
 private void radioButton_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb=(RadioButton) sender;
if (rb.Checked)
{
//添加你需要的操作
 
}
}
------解决方案--------------------
public void radioBtn_CheckedChange(object sender, EventArgs e)
 {
 if (!((RadioButton)sender).Checked)
{ return; }
 string rechargeMoney = string.Empty;
 switch (((RadioButton)sender).Text.ToString())
 {
case "RadioButton界面显示的名字":
 this.lbl_money_tip.Text = rechargeMoney;
 break;
 default: 
 break;
}
}