以下是我的表单 - Form1是第一种表单。从Form1我使用showdialog
方法移动到Form2(Form1在后台,Form2在顶部)。现在单击Form2上的按钮,会显示messagebox
(请注意,Form1仍在后台)。 Messagebox
只有OK按钮。现在,当我按OK
时,我想加载Form3并想要关闭Form2和Form1。如何关闭Form2和Form1?我在Form2中使用了这段代码:
private void button1_Click(object sender, EventArgs e)
{
if (...)
{
MessageBox.Show("hello");
this.DialogResult = DialogResult.OK;
this.Close();
Form3 frm = new Form3();
frm.ShowDialog();
}
}
此方法不会关闭Form2和Form1,但会显示Form3。所以我在Form2中尝试了这个:
private void button1_Click(object sender, EventArgs e)
{
if (...)
{
if (MessageBox.Show("hello") == DialogResult.OK)
{
this.Close();
Form3 frm = new Form3();
frm.ShowDialog();
}
}
}
这两种表格都没有关闭。我尝试在this.Close
下的Form2中调用Form1和Form2中创建的公共关闭方法(Form1和Form2中的MessageBox.Show
)。仍然没有效果。如何摆脱消息框的OK按钮?
感谢。简单但棘手..请留下代码片段。不幸的是,我不理解技术术语: - (
答案 0 :(得分:1)
您需要知道要关闭的实例(本例中的表单)。
在Form2中,您可以创建一个变量(例如theOneForm
)来存储对Form1的引用,并在创建Form1之后(甚至在Form1的构造函数中)设置它。
// in Form2
public Form1 theOneForm {get; set;}
// in Form1
Form2 frm = new Form2();
frm.theOneForm = &this; // correct me if I'm wrong here...
然后从button1_Click
致电theOneForm.Close()
- 这应关闭您的Form1。
private void button1_Click(object sender, EventArgs e)
{
if (...)
{
if (MessageBox.Show("hello") == DialogResult.OK)
{
Form3 frm = new Form3();
frm.ShowDialog();
theOneForm.Close();
this.Close();
}
}
}
此外,在执行其他代码后关闭表单。