C# 显示其他表单时禁用完整表单

C# 显示其他表单时禁用完整表单,c#,.net,winforms,.net-3.5,C#,.net,Winforms,.net 3.5,我想禁用我的main表单,而选项表单设置为显示 为此,我考虑在mainForm的顶部放置一个不可见的表单,这样就不可能进行交互(但只有通过鼠标点击,键盘笔划才能工作) 如何做到这一点?您可以做以下两件事之一: 1) 将窗体显示为对话框。这将阻止在Form2可见时选择第一个form Form f2 = new Form2(); f2.ShowDialog(); 或者2)如果您想以非模态方式显示(听起来好像您不想要),请禁用第一个窗体上的所有控件 也可以在另一个窗体打开时隐藏主窗体: this.V

我想禁用我的
main表单
,而
选项表单
设置为显示

为此,我考虑在
mainForm
的顶部放置一个不可见的表单,这样就不可能进行交互(但只有通过鼠标点击,键盘笔划才能工作)


如何做到这一点?

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

1) 将窗体显示为对话框。这将阻止在Form2可见时选择第一个form

Form f2 = new Form2();
f2.ShowDialog();
或者2)如果您想以非模态方式显示(听起来好像您不想要),请禁用第一个窗体上的所有控件


也可以在另一个窗体打开时隐藏主窗体:

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

性能良好时效果最佳。在主窗体
按钮中尝试此操作,然后单击事件

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

这就是ShowDialog的用途,它将以模式对话框的形式打开您的第二个表单。为什么不在您打开选项表单的地方打开
this.Enabled=false
?@MarkHall谢谢,我不知道
ShowDialog()
选项。@Devator:很高兴它有帮助。如果你的问题解决了,请随意接受答案。我不得不等几分钟才能回答。现在完成;-)
try 
{
    form2 f = new form2();
    Enabled = false;
    f.ShowDialog(this);
    Enabled = true;
    f.Dispose();
} 
catch (Exception exception) 
{
    MessageBox.Show(exception.Message);
}