C# Winform遍历控件(窗体、Panel的子控件和全选CheckBox)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))
{
ctrl.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;
}
}
}
三、C# Winform遍历控件之遍历 CheckBox 控件(全选)
如果要求单击“全选”,勾选所有 CheckBox;再次单击“全选”,取消勾选所有 CheckBox;代码如下:
方法1:
private void ForeachCheckBox(Control ctrls, bool currVal)
{
CheckBox cb;
foreach (Control ctrl in ctrls.Controls)
{
if (ctrl is CheckBox)
{
cb = (CheckBox)ctrl;
cb.Checked = currVal;
}
}
}
调用(双击全选的 CheckBox 控件,自动切换到代码页,并自动添加 CbAll_CheckedChanged 事件,在该事件中调用):
private void CbAll_CheckedChanged(object sender, EventArgs e)
{
ForeachCheckBox(cbAll.Parent, cbAll.Checked);
}
cbAll 为全选的 CheckBox 的 Name,效果如图1所示:
图1
方法2:
private void ForeachCheckBoxes(Control ctrls, bool currVal)
{
CheckBox cb;
foreach (Control ctrl in ctrls.Controls.OfType<CheckBox>())
{
cb = (CheckBox)ctrl;
cb.Checked = currVal;
}
}
调用方法与效果和“方法1”一样。
-
相关阅读
- C# Winform设置焦点focus(text
- C# Winform label自定义大小与居中,文字自动换行
- C# Winform 打开文件夹并选中文件和打开文件
- C# Winform鼠标样式设置方法
- Excel制作单双控件动态图表,含用组合框、选项按钮动
- listview修改选中行项的颜色和加加粗字体 Winf
- C# 画 Winform Panel边框的两种方法(ControlPain
- 总结您的web浏览器已经阻止此站点以不安全的方式使用ac
- C# Winform button与label
- C# ListView控件显示表格(自适应宽度)
- C# Winform窗体居中与关闭窗体
- Winform用代码动态添加控件