如何显示模式表单以响应对MenuItem的单击?

时间:2014-02-28 15:27:31

标签: c# winforms

我有两个表单(Form1和Form2)。我在Form1中有一个MenuItem帮助>更多信息。我需要一个像这样的代码......

当MenuItem帮助>单击Form1中的更多信息时,Form2应显示,但不应禁用MenuItem更多信息。 Form1应该被禁用。

在Form2中我有一个Button。如果我单击该按钮,则应关闭Form2并启用Form1。

我无法在Form1的MenuItemMoreInfo_Click中创建Form2的对象实例,因为如果我单击它10次,那么将打开10个Form2。因此,为了避免这种情况,我需要在单击MoreInfo一次后禁用Form1。

2 个答案:

答案 0 :(得分:3)

对于此行为,您需要将form2显示为Dialog。您还需要使用按钮或代码设置DialogResult以确保其正确关闭。

只需致电:

new Form2().ShowDialog();

在您的菜单中点击处理程序,它将在顶部显示并禁用其他表单,直到Form2关闭。

如果您需要检查用户点击的按钮,可以使用以下内容:

if (new Form2.ShowDialog() == DialogResult.OK)
  //the user clicked the button assigned to OK!

答案 1 :(得分:0)

Form1代码:

   private void item1ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        new Form2().Show();
        this.Visible = false;
    }

表格2代码:

   private void button1_Click(object sender, EventArgs e)
    {
        ((Form1)Application.OpenForms["Form1"]).ShowDialog();
    }