C# Winform遍历控件(窗体、Panel的子控件)Controls

在 Winform 开发中,窗体(Form)就像一个大容器,可以装各种各样的控件,包括 Panel控件。如果窗体是 Winform 中的最大的容器,那么 Panel控件可以算是老二,它专门用于软件界面的排版,相当于 Web 开发中的层(div),几乎所有控件都可以包含到 Panel 中,包括窗体。

  把控件包含到 Panel 中,一方面是为界面布局美观(填充不同的背景颜色或图片),另一方面便于对子控件进行相关的操作。可以通过遍历的方式获取控件中包含的所有子控件,从而实现对它们的操作,下面就看如何遍历窗体中和 Panel 中的子控件。

 

  一、C#遍历窗体控件

  主要遍历属于窗体(Form)的控件(Controls),假如窗体中有 Panel、Button 和 TextBox 控件,遍历代码如下:

  /// <summary>
  /// Winform C#遍历窗体控件
  /// </summary>
  /// <param name="ctrlName">控件名称</param>
  public void ForeachFormControls(string ctrlName)
  {
    foreach (Control ctrl in this.Controls)
    {
      if (ctrl is Panel)
      {
        //相关操作代码
        ctrl.BackColor = Color.Aquamarine;
      }
      else if (ctrl is Button)
      {
        ctrl.ForeColor = Color.RoyalBlue;
      }
      else if (ctrl is TextBox)
      {
        ctrl.Text = null;
      }

      //根据控件名称找某个控件
      if(ctrl.Name.Equals(ctrlName))
      {
        vctrl.Name = string.Empty;
      }
    }
  }

  上面的代码,只是根据控件的类型和传递的控件名称进行了一些随意操作,可以根据具体需求把它改为所需操作。

 

 

  二、C# Winform遍历控件之遍历 Panel 中的子控件

  遍历方法跟遍历窗体中的控件相同,只不过 this 要改为 Panel 的名称,假如 Panel控件中只包含 Button 和 TextBox 子控件,代码如下:

  /// <summary>
  /// C#遍历子控件
  /// </summary>
  /// <param name="ctrlName">控件名称</param>
  public void ForeachPanelControls(string ctrlName)
  {
    foreach (Control ctrl in panel1.Controls)
    {
      if (ctrl is Button)
      {
        if (ctrl.Name.Equals(ctrlName))
          ctrl.ForeColor = Color.RoyalBlue;
        else
          ctrl.ForeColor = Color.SkyBlue;
      }
      else if (ctrl is TextBox)
      {
        if (ctrl.Name.Equals(ctrlName))
          ctrl.Name = "当前值";
        else
          ctrl.Text = null;
      }
    }
  }

  三、遍历不同panel中的textbox。

 

for(int i=1;i<=7;i++)
{
this.Controls["PanelNo" + i.ToString()].Controls["txtManyNO" + i.ToString()].Text = "";
this.Controls["PanelNo" + i.ToString()].Controls["txtCarModleNo" + i.ToString()].Text = "";
this.Controls["PanelNo" + i.ToString()].Controls["txtColorNo" + i.ToString()].Text = "";
this.Controls["PanelNo" + i.ToString()].Controls["txtTypeNo" + i.ToString()].Text = "";
this.Controls["PanelNo" + i.ToString()].Controls["txtFogNo" + i.ToString()].Text = "";
this.Controls["PanelNo" + i.ToString()].Controls["txtRackNo" + i.ToString()].Text = "";
this.Controls["PanelNo" + i.ToString()].Controls["txtRadar1No" + i.ToString()].Text = "";
this.Controls["PanelNo" + i.ToString()].Controls["txtRadar2No" + i.ToString()].Text = "";
}

四、页面遍历使用FindControls()方法

for(int i =1;i=30;i++){findControl("textBoxt" + i.toString())..;}

 

posted @ 2019-11-15 11:36  惊风雨  阅读(10274)  评论(0编辑  收藏  举报