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

2、局部控件为userControl(uWgter),在TabelLayoutPanel查询userControl(tlp_wgters)的存在,并加入list

            PubSource.Wgters = new List<uWgter>();
foreach (Control ct in this.tlp_Wgters.Controls)
{
if (ct is uWgter)
{
PubSource.Wgters.Add((uWgter)ct);
}
}
遍历list中uWgter,断连         
        foreach(uWgter wgter in PubSource.Wgters)
{
wgter.DisconnectWgter();
}

  

最新文章

  1. SQL 2008无法连接的解决办法
  2. HttpClient 3.X 4.3 4.x超时设置
  3. jsp、js分页功能的简单总结
  4. HDU 4417 - Super Mario ( 划分树+二分 / 树状数组+离线处理+离散化)
  5. android 开发进阶自定义控件 类似 TextView
  6. linux系统开机过程描述
  7. 分类算法-----KNN
  8. [Oracle]UNIX与Windows 2000上Oracle的差异(I)
  9. 第二次作业-熟悉git
  10. teamviewer quicksupport 插件(下载)
  11. zabbix,php,nginx,mysql源码安装 神仙操作
  12. 计算pi的位数
  13. windows php exec()不生效问题
  14. Asp.Net任务Task和线程Thread
  15. python数据探索
  16. 菜鸟水平如何在Android Studio中添加uiautomator测试框架
  17. python-day1笔记
  18. NFS服务基本配置及使用
  19. MVC 图片上传 带进度条(转)
  20. BZOJ2034 【2009国家集训队】最大收益

热门文章

  1. JForum项目搭建
  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:自适应大小的按钮组
  3. &#39;/&#39;和‘/*’差异造成的No mapping found for HTTP request with URI [/springMVC/welcome.jsp] in DispatcherServlet with name &#39;springmvc&#39;
  4. Day7 - C - Saddle Point ZOJ - 3955
  5. maven知识结构笔记
  6. SmartAssembly .net混淆后,无法找到部分类型
  7. ASP.NETCore -----导出Excel文件并下载
  8. redis改配置
  9. Spring入门之五-------SpringIoC之通过注解实现
  10. 20170305深圳Meetup Rails中CSS,JS引用关系分析