4

我想禁用我的mainFormwhileoptionsForm设置为显示。

为此,我正在考虑在mainForm无法进行交互的顶部放置一个不可见的表单(但只有通过鼠标点击,键盘敲击仍然有效)。

如何才能做到这一点?

4

3 回答 3

6

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

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;
    }
}
于 2013-04-17T14:37:43.213 回答
0

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

this.Visible = false;
optionsForm.ShowDialog();
this.Visible = true;
于 2013-04-17T14:39:14.457 回答
0

在性能良好的情况下效果最佳。Button-Click在您的主表单事件中尝试此操作。

try 
{
    form2 f = new form2();
    Enabled = false;
    f.ShowDialog(this);
    Enabled = true;
    f.Dispose();
} 
catch (Exception exception) 
{
    MessageBox.Show(exception.Message);
}
于 2016-06-19T10:37:25.517 回答