一次在多个字段上额外禁用 属性

Extra disablement property on many fields at once

我有一个包含许多控件的表单。在列表中有一个 字段应该禁用所有其他控件 以防止任何进一步的用户操作。

你知道是否有简单的方法来做到这一点?不想在所有字段上一一添加相同的禁用条件(在它们自己的启用之上)逻辑)?

没有代码示例(没关系 a good, minimal, complete one),无法提供具体建议。但是您可以枚举表单中的所有控件,当然在这样做时您可以将每个控件的 Enabled 标志设置为 false.

可能看起来像这样:

void SetEnabledForAllControls(ControlCollection controls, bool value)
{
    foreach (Control control in controls)
    {
        control.Enabled = value;
        SetEnabledForAllControls(control.Controls, value);
    }
}

您可以通过将表单的 Form.Controls 值作为 controls 参数传递给它,并将新值(truefalse)传递给 Enabled 属性 每个控件作为第二个参数。

从你的问题中不清楚 field that should disable all other controls 是什么,但如果它本身就是一个相同形式的控件,你需要记住设置它的 Enabled 属性调用上述方法后立即返回true,否则它也会被禁用。