Forms : Enabled/Disable 一个容器(面板)中的所有控件

Forms : Enabled/Disable all controls in a container (panel)

我正在编写一个 C# Forms 应用程序,想知道如何 enable/disable 面板中的所有控件容器。

这是我的代码:

private void EnabledPanelContents(Panel panel, bool enabled)
{
    foreach (var item in panel.Controls)
    {
        item.enabled = enabled;
    }
}

panel.Controls 集合中没有已启用的 属性。

如何 enable/disable 面板中的所有控件容器。

提前致谢。

您正在获取控件 var 并对其进行迭代,而 var 不包含任何 property Enabled。您需要遍历控件并将每个控件设为 Control。试试这个

private void EnabledPanelContents(Panel panel, bool enabled)
{
    foreach (Control ctrl in panel.Controls)
    {
        ctrl.Enabled = enabled;
    }            
} 

启用可以是 truefalse

如果您将 item 声明为 var(在 foreach 循环中),它将不具有 windows 控件的属性。 您应该将其声明为控件。

试试这个代码片段,它应该可以工作:

foreach (Control item in panel.Controls)
{
     item.Enabled = true;      // = true: enable all, = false: disable all
}

试试下面的代码,

    private void DisableAll_Click(object sender, EventArgs e)
    {
        EnabledPanelContents(this.panel1, false);
    }

    private void EnabledPanelContents(Panel panel, bool enabled)
    {
        foreach (Control item in panel.Controls)
        {
            item.Enabled= enabled;
        }
    }

"How can I enable/disable all controls container within a panel."

答: 如果你想禁用或启用面板内的所有控件,你可以直接调用,

Panel panel; 
-> panel.Enabled = true;//For enabling all controls inside the panel.
-> panel.Enabled = false;//For disabling all controls inside the panel.

如果您只想启用或禁用面板内的特定控件,则可以遍历控件集合并根据您的要求将其启用状态设置为 true 或 false。

@安舒

如果您的控件是 HTML 控件,则使用

foreach (Control ctrl in myControl1.Controls)
    if (ctrl is HtmlControl)
        ((HtmlControl)ctrl).Disabled = true;
private void Form1_Load(object sender, EventArgs e)
{ 
    foreach (Control item in panel.Controls)
        if (ctrl is Button)
            ((Button)item).Enabled = false;
}