6

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

这是我的代码:

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

panel.Controls 集合中没有 enabled 属性。

如何启用/禁用面板中的所有控件容器。

提前致谢。

4

6 回答 6

15

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

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

启用可以是truefalse

于 2015-04-13T08:58:17.620 回答
3

“如何启用/禁用面板中的所有控件容器。”

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

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

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

于 2017-05-03T10:29:26.183 回答
1

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

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

foreach (Control item in panel.Controls)
{
     item.Enabled = true;      // = true: enable all, = false: disable all
}
于 2015-04-13T09:05:18.810 回答
1

试试下面的代码,

    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;
        }
    }
于 2015-04-13T09:14:13.077 回答
-1
private void Form1_Load(object sender, EventArgs e)
{ 
    foreach (Control item in panel.Controls)
        if (ctrl is Button)
            ((Button)item).Enabled = false;
}
于 2018-06-02T11:46:20.377 回答
-1

@anshu

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

foreach (Control ctrl in myControl1.Controls)
    if (ctrl is HtmlControl)
        ((HtmlControl)ctrl).Disabled = true;
于 2017-09-12T18:34:49.730 回答