我想启用Panel上的所有控件.我可以像下面一样遍历Panel.这并不触及所有组件,只是顶级组件.我该怎么做呢?(这不是答案)
private void LoopThroughAllControls(System.Windows.Forms.Panel panel)
{
for (int i = 0; i < panel.Controls.Count; i++)
{
panel.Controls[i].Enabled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
ToolStrip添加ToolStripButton项目的代码:
this.toolStripContractor.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbContractor_AddFile,
this.tsbContractor_View,
this.tsbContractor_Delete});
Run Code Online (Sandbox Code Playgroud)
您所要做的就是将Panel的Enabled属性设置为true或false.
从MSDN的Enabled财产页面:
当容器控件的enabled属性设置为false时,也会禁用其包含的所有控件.例如,如果用户单击禁用的GroupBox控件中包含的任何控件,则不会引发任何事件.
但是,如果您选择使用递归方法,则以下是如何编写它:
void SetEnabledAllChildrenOf(Control control, bool enabled)
{
control.Enabled = enabled;
foreach(Control c in control.Controls)
{
SetEnabledAllChildrenOf(c, enabled);
}
}
Run Code Online (Sandbox Code Playgroud)