在显示其他表单时禁用完整表单

本文关键字:表单 显示 其他 | 更新日期: 2023-09-27 18:09:53

我想禁用我的mainForm,而optionsForm设置为显示。

要做到这一点,我想把一个看不见的形式在mainForm的顶部,所以交互是不可能的(但只能通过鼠标点击,键盘敲击仍然可以工作)。

如何做到这一点?

在显示其他表单时禁用完整表单

你可以做以下两件事之一:

1)将表单显示为对话框。当Form2可见时,这将阻止第一个表单被选择。

Form f2 = new Form2();
f2.ShowDialog();

或2)禁用第一个表单上的所有控件,如果你想以非模态方式显示(这听起来像是你不想要的)

Form f2 = new Form2();
f2.Shown += ToggleControls;
f2.Closing += ToggleControls;
f2.Show();
public void ToggleControls(object o, sender e)
{
    foreach(Control c in this.Controls)
    {
        c.Enabled = !c.Enabled;
    }
}

或者您可以在另一个打开时隐藏主窗体:

this.Visible = false;
optionsForm.ShowDialog();
this.Visible = true;

性能好时效果最好。在您的主窗体Button-Click事件中尝试此操作。

try 
{
    form2 f = new form2();
    Enabled = false;
    f.ShowDialog(this);
    Enabled = true;
    f.Dispose();
} 
catch (Exception exception) 
{
    MessageBox.Show(exception.Message);
}