一个groupbox中,有七八个RadioBox,我想顺序点击之,在外面的一个label的Text显示1、2、3、4、5...等顺序的数字我目前知道就一个一个的RadioBox的Click事件等可以写但是RadioBox很多,GroupBox也有好几十个,想请问下什么办法可以较为简洁和快速一点来做这件事,谢谢

解决方案 »

  1.   

    所有的RadioBox绑定到同一个click,然参数sender,就是点击的RadioBox,转换用((RadioBox)sender).xxxx,你可以在每个RadioBox的tag中保留1,2,3等,或者用一个变量表示点击顺序
      

  2.   

    界面上拖好 RadioBox 之后,在后台代码中绑定事件
    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 里显示不同内容
    }
      

  3.   

    第一:
     
             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)
             {
                   //添加你需要的操作               
     
             }
            }
      

  4.   

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