无论我点击哪个按钮,我的新表格都会关闭

时间:2014-05-07 19:50:17

标签: c# forms dialog windows-applications

我的Form1在"显示图像"时打开一个新表单。点击。当MW3Images出现时,无论我点击"下一步","上一页"或"关闭"。我已经设置了"取消按钮"选项使用"关闭"按钮,但更改它没有任何区别。 这是"显示图像"的源代码。按钮:

   private void showImages_Click(object sender, EventArgs e)
    {
        MW3Images MW3Images = new MW3Images();
        MW3Images.ShowDialog();
        if (MW3Images.DialogResult == System.Windows.Forms.DialogResult.Cancel)
            MW3Images.Close();
    }

对于MW3Images表格:

   public MW3Images()
    {
        InitializeComponent();
        pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
        Controls.Add(pictureBox1);

        pictureBox1.Image = Properties.Resources.boxart;

        next.DialogResult = System.Windows.Forms.DialogResult.OK;
        previous.DialogResult = System.Windows.Forms.DialogResult.OK;
        imagesQuit.DialogResult = System.Windows.Forms.DialogResult.Cancel;
    }

    private void pictureBox1_Click(object sender, EventArgs e)
    { }
    private void Images_Load(object sender, EventArgs e)
    { }
    private void imagesQuit_Click(object sender, EventArgs e)
    { }
    private void next_Click(object sender, EventArgs e)
    { }
    private void previous_Click(object sender, EventArgs e)
    { }
}

我在"下一个"下面有几个if语句。和"上一个",但他们的存在并不影响表格结束。 任何帮助将非常感激。谢谢!

2 个答案:

答案 0 :(得分:2)

当您致电.ShowDialog()时,这是正确的行为。见the documentation

  

调用此方法时,直到关闭对话框后才会执行其后面的代码。通过将对话框分配给窗体上Button的DialogResult属性或通过在代码中设置窗体的DialogResult属性,可以为对话框分配DialogResult枚举的值之一。然后,此方法返回此值。

  

与非模态窗体不同,当用户单击对话框的关闭窗体按钮或设置DialogResult属性的值时,.NET Framework不会调用Close方法。而是隐藏表单,并且可以在不创建对话框的新实例的情况下再次显示该表单。因为显示为对话框的表单是隐藏的而不是关闭的,所以当应用程序不再需要该表单时,必须调用表单的Dispose方法。

换句话说,只要你设置一个DialogResult,当点击表单上任何有这样结果的按钮时就会发生这种情况,然后隐藏表单并且调用表单继续执行它的代码。 / p>

您应该使用.Show()代替.ShowDialog(),或者不使用表单上按钮的DialogResult属性。相反,如果您在设计器中双击它们,您将获得一个_Click()事件,您可以将代码放入。在这些函数中,您可以放置​​加载了代码的代码。下一张图片 - 但没有自动的方式来做到这一点。你自己必须写下来。

答案 1 :(得分:1)

试试这个,设置对话框的所有者:

MW3Images.ShowDialog(this);