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

时间:2013-04-17 14:34:24

标签: c# .net winforms .net-3.5

我想在mainForm设置为显示时禁用optionsForm

要做到这一点,我想在mainForm上面放一个看不见的形式,这样就无法进行交互(但只有通过鼠标点击,键盘敲击仍然有效)。

如何做到这一点?

3 个答案:

答案 0 :(得分:5)

您可以执行以下两项操作之一:

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;
    }
}

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

效果最佳,性能良好。请在主要格式Button-Click活动中尝试此操作。

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