这是我的代码
Form1中
TicketDetails td = new TicketDetails(getTicketID());
td.Show();
我希望在显示td时关闭Form1。
答案 0 :(得分:4)
如果Form1
是您作为参数传递给Application.Run
的表单,那么您无法关闭它,或者您的应用程序将退出。您可以做的是在显示td
时隐藏表单。
TicketDetails td = new TicketDetails(getTicketID());
td.Show();
// Hide the main form
form1.Hide();
如果Form1
不是您应用的主要表单,那么您只需在Close()
上致电form1
。
编辑@comment,
public class Form1 : Form
{
private override OnLoad(object sender, EventArgs e) {
DoWork();
}
public void DoWork() {
// your code
}
}
然后是一个例子。
TicketDetails td = new TicketDetails(getTicketID());
td.Show();
form1.Hide();
// example, maybe you need to call your work method
form1.DoWork();
答案 1 :(得分:3)
如果要在显示第二个表单后关闭第一个表单,请使用Form.Shown
事件:
td.Shown += (o, e) => { this.Close(); }
td.Show();
对于其他可能有趣的活动,请查看order of events in Windows Forms。当然,立即关闭当前表格也可以:
this.Close();
td.Show();
答案 2 :(得分:1)
我做过这样的事情:
TicketDetails td = new TicketDetails(getTicketID());
td.Show();
this.Hide();
td.Close += (object sender, EventArgs e) =>
{
td.Parent.Close();
};
答案 3 :(得分:0)
只要TicketDetails不是模态的,td.show()之后的任何代码都会运行。
我还假设Form1是项目的启动表单。如果是这种情况,则使用.close将停止您的应用。
你尝试过这个:TicketDetails td = new TicketDetails(getTicketID());
td.Show();
Form1.Hide();
这显然隐藏了Form1
由于
保