zoukankan      html  css  js  c++  java
  • c# 循环界面控件

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

      

  • 相关阅读:
    [原创]软件性能测试培训
    100w条记录分页,可以有多快?—— DataReader分页与SQL语句分页的对比测试(在线演示)
    【自然框架】注册会员活动——第一份代码的修改建议(第一版)
    加班有几种情况?兼谈讨论的方式。
    衔着树枝飞跃太平洋的傻鸟!(童话版)
    参加活动的好处。
    【自然框架】开源社区活动,会员注册的第一份代码!
    【自然框架】数据访问之精雕细琢(一)存储过程的参数
    自然框架开发系列(一):自然框架 和 AgileEAS.NET 合作,开发b/s的药店系统!
    自然框架开源社区的第一次活动——实现会员注册
  • 原文地址:https://www.cnblogs.com/michellexiaoqi/p/11270361.html
Copyright © 2011-2022 走看看