Win窗体控件的动态添加及其控制问题

 Win窗体控件的动态添加及其控制问题

    使用语言:C#

    一、动态添加控件代码:

         Hashtable   mht   =   new   Hashtable();// 为操作动态添加的控件,特添加此代码

        int  N=10;

        GroupBox [] testGroupBox=new GroupBox[N];
        for(int i=0;i<N;i++)
       {
       #region 动态添加GroupBox控件
        testGroupBox[i]=new GroupBox();
        testGroupBox[i].Location=new Point(30,60+120*i);
        testGroupBox[i].Size=new System.Drawing.Size(900,100);
        testGroupBox[i].Text=(i+1).ToString();
        this.Controls.Add(testGroupBox[i]);
        #endregion

        #region 动态添加Label控件

        Label [] correctLabel=new Label[n];
        correctLabel[i]=new Label();
        correctLabel[i].Location=new Point(10,10);
        correctLabel[i].Size=new System.Drawing.Size(15,15);
        correctLabel[i].Text=="singleRadioButton["+i.ToString()+"][1]";
        correctLabel[i].ForeColor=Color.Red;
        correctLabel[i].Visible=false;
        correctLabel[i].Name="Label["+i.ToString()+"]";
        mht[correctLabel[i].Name]=correctLabel[i];// ◆
    
        testGroupBox[i].Controls.Add(correctLabel[i]);
        #endregion

       #region 动态添加RadioButton控件
       RadioButton [] singleRadioButton=new RadioButton[4];
       for(int j=0;j<4;j++)
      {
        singleRadioButton[j]=new RadioButton();
        singleRadioButton[j].Name="singleRadioButton["+i.ToString()+"]["+j.ToString()+"]";
        mht[singleRadioButton[j].Name]=singleRadioButton[j];//  ◆
        singleRadioButton[j].Location=new Point(10+210*j,10);
        singleRadioButton[j].Size=new System.Drawing.Size(200,50);

         switch (j)
         {
         case 0:
            singleRadioButton[j].Text="A:";
            break;
         case 1:
            singleRadioButton[j].Text="B:";
            break;
        case 2:
           singleRadioButton[j].Text="C:";
           break;
        case 3:
           singleRadioButton[j].Text="D:";
           break;
       }

       testGroupBox[i].Controls.Add(singleRadioButton[j]); 
       #endregion
      }
     }

    二、操作动态添加的控件。

        为操作动态添加的控件,特声明一中第一行的代码和注释为“◆”的所在行的代码。

        操作代码如下:

        strRadioButtonName=((Label)mht["Label["+i.ToString()+"]"]).Text;
        if(mht.Contains(strRadioButtonName))// 判断该控件是否存在
        {
             if(((RadioButton)mht[strRadioButtonName]).Checked==true)
             {
                  ((Label)mht["Label["+i.ToString()+"]"]).Text="●";
             }
            else
            {
                  ((Label)mht["Label["+i.ToString()+"]"]).Text="Х";
             }
            ((RadioButton)mht[strRadioButtonName.Substring(0,strRadioButtonName.Length-3)+"[0]"]).Enabled=false;
           ((RadioButton)mht[strRadioButtonName.Substring(0,strRadioButtonName.Length-3)+"[1]"]).Enabled=false;
           ((RadioButton)mht[strRadioButtonName.Substring(0,strRadioButtonName.Length-3)+"[2]"]).Enabled=false;
         ((RadioButton)mht[strRadioButtonName.Substring(0,strRadioButtonName.Length-3)+"[3]"]).Enabled=false;
      }
      else
     {
         ((Label)mht["Label["+i.ToString()+"]"]).Text="?";
     }
    ((Label)mht["Label["+i.ToString()+"]"]).Visible=true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值