我想禁用我的mainForm
whileoptionsForm
设置为显示。
为此,我正在考虑在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);
}