C#中如何遍历窗口中的控件!

private void button1_Click( object sender, EventArgs e)
              {
                  listBox1.Items.Clear();
                  GetControl(Controls);
              }
        private void GetControl( Control.ControlCollection ctc)
              {
              foreach ( Control ct in ctc)
                  {
                    //调用AddControlInofToListBox方法获取控件信息
                      AddControlInofToListBox(ct);
                  //C#只遍历窗体的子控件,不遍历孙控件
                    //当窗体上的控件有子控件时,需要用递归的方法遍历,才能全部列出窗体上的控件

                  if (ct.HasChildren)
                      {
                          GetControl(ct.Controls);
                      }
                  }
              }
        private void AddControlInofToListBox( Control ct)
              {
             switch (ct.GetType().Name)
                  {
                 //如果是ListBox、CheckBox、Button
                 case "ListBox":
                 case "GroupBox":
                 case "Button":
                          listBox1.Items.Add("控件名:" + ct.Name);
                     break;
                  //如果是CheckBox
                 case "CheckBox":
                     if ((( CheckBox)ct).Checked)
                          {
                              listBox1.Items.Add("控件名:" + ct.Name + ",是否选中:是");
                         //((CheckBox)ct).Checked = false;
                          }
                     else
                          {
                              listBox1.Items.Add("控件名:" + ct.Name + ",是否选中:否");
                         //((CheckBox)ct).Checked = true;
                          }
                     break;
                  //如果是RadioButton
                 case "RadioButton":
                      RadioButton rdb = ( RadioButton)ct;
                     if (rdb.Checked)
                          {
                              listBox1.Items.Add("控件名:" + ct.Name + ",是否选中:是");
                              //rdb.Checked = false;
                          }
                     else
                          {
                              listBox1.Items.Add("控件名:" + ct.Name + ",是否选中:否");
                              //rdb.Checked = true;
                          }
                     break;
                 //其它值
                  default:
                          listBox1.Items.Add("控件名:" + ct.Name + ",值:" + ct.Text);
                      break;
                  }
              }

       //遍历groupBox1控件的子控件
         private void button2_Click( object sender, EventArgs e)
              {
                  listBox1.Items.Clear();
                //可以共用上面的,遍历窗体控件的方法
                 //只是参数由Controls改为groupBox1.Controls

                 GetControl(groupBox1.Controls);
              }
-------------------------------------

foreach(TextBox    t    in    this.Controls)   
   {   
   MessageBox.Show(t.Text);   
   }

for(int    i=0;this.Controls.Count-1;i++)   
       if(this.Controls[i]    is    TextBox)   
           this.Controls[i].Text="";

///    <summary>   
   ///    设置此界面中控件的某些属性   
   ///    </summary>   
   ///    <param    name="ctl"></param>   
   public    void    Set_Controls(Control    ctl)   
   {   
   //当控件没有子控件时   
   if    (    !ctl.HasChildren)   
   {   
   switch(ctl.GetType().ToString())   
   {   
   case    "System.Windows.Forms.Label":   
   break;   
   case    "System.Windows.Forms.Button":   
   break;   
   case    "System.Windows.Forms.TextBox":   
   break;   
   case    "System.Windows.Forms.ListView":   
   break;   
   case    "System.Windows.Forms.GroupBox":   
   break;   
   case    "System.Windows.Forms.ComboBox":   
   break;   
   case    "System.Windows.Forms.ImageList":   
   break;   
   case    "System.Windows.Forms.DataGrid":   
   break;   
   case    "System.Windows.Forms.MainMenu":   
   break;   
   case    "System.Windows.Forms.TreeView":   
   break;   
   }   
   }   
   else    //当控件有子控件时   
   {   
   int    i    =    0;   
   while    (    i    <    ctl.Controls.Count    )   
   {   
   Set_Controls(    ctl.Controls[i]    );   
   i    ++;   
   }   
   }   
   }   
    
   你调用时,可以这样用:   
   Set_Controls(this);

private    void    button1_Click(object    sender,    System.EventArgs    e)   
   {   
   foreach(TextBox    s    in    this.Controls    )   
   {   
   MessageBox.Show    (s.ToString());   
    
    
   }   
   }

 

foreach(Control    c    in    Controls)   
   {   
       if(c    is    TextBox)   
           MessageBox.Show("good");   
   }

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值