在 Winform 開發中,窗體(Form)就像一個大容器,能夠裝各類各樣的控件,包括 Panel控件。若是窗體是 Winform 中的最大的容器,那麼 Panel控件能夠算是老二,它專門用於軟件界面的排版,至關於 Web 開發中的層(div),幾乎全部控件均可以包含到 Panel 中,包括窗體。佈局
把控件包含到 Panel 中,一方面是爲界面佈局美觀(填充不一樣的背景顏色或圖片),另外一方面便於對子控件進行相關的操做。能夠經過遍歷的方式獲取控件中包含的全部子控件,從而實現對它們的操做,下面就看如何遍歷窗體中和 Panel 中的子控件。this
1、C#遍歷窗體控件spa
主要遍歷屬於窗體(Form)的控件(Controls),假如窗體中有 Panel、Button 和 TextBox 控件,遍歷代碼以下:code
/// <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;
}orm
//根據控件名稱找某個控件
if(ctrl.Name.Equals(ctrlName))
{
vctrl.Name = string.Empty;
}
}
}blog
上面的代碼,只是根據控件的類型和傳遞的控件名稱進行了一些隨意操做,能夠根據具體需求把它改成所需操做。圖片
2、C# Winform遍歷控件之遍歷 Panel 中的子控件開發
遍歷方法跟遍歷窗體中的控件相同,只不過 this 要改成 Panel 的名稱,假如 Panel控件中只包含 Button 和 TextBox 子控件,代碼以下:string
/// <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;
}
}
}form
二、局部控件爲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(); }