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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM