我的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语句。和"上一个",但他们的存在并不影响表格结束。 任何帮助将非常感激。谢谢!
答案 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);