Вы должны написать себе служебную функцию для этого. Вы можете перебирать элементы управления формы, а затем рекурсивно проверять дочерние элементы управления каждого элемента. Например:
public static void SetEnableOnAllControls(Control parentControl, bool enable)
{
parentControl.Enabled = enable;
foreach (Control control in parentControl.Controls)
SetEnableOnAllControls(control, enable);
}
[...]
// inside your form:
SetEnableOnAllControls(this, false);
Это не относится к ToolStrip
s, которые не контролируются. Вы можете написать отдельный, похожий метод для тех.
Обратите внимание, что приведенное выше также отключает саму форму. Если вы этого не хотите, попробуйте следующее:
public static void SetEnableOnAllChildControls(Control parentControl, bool enable)
{
foreach (Control control in parentControl.Controls)
{
control.Enabled = enable;
SetEnableOnAllChildControls(control, enable);
}
}
Если вы действительно имели в виду свойство ReadOnly , которое относится только к TextBoxes , попробуйте следующее:
public static void SetReadOnlyOnAllControls(Control parentControl, bool readOnly)
{
if (parentControl is TextBoxBase)
((TextBoxBase) parentControl).ReadOnly = readOnly;
foreach (Control control in parentControl.Controls)
SetReadOnlyOnAllControls(control, readOnly);
}