1

这是我的代码

表格1

TicketDetails td = new TicketDetails(getTicketID());
td.Show();

我想在显示 td 时关闭 Form1。

4

4 回答 4

4

如果Form1是您作为参数传递的表单,Application.Run则您无法关闭它,否则您的应用程序将退出。您可以做的是在td显示时隐藏表单。

TicketDetails td = new TicketDetails(getTicketID());
td.Show();

// Hide the main form
form1.Hide();

如果Form1不是您的应用程序的主窗体,那么您可以简单地调用Close().form1

编辑@评论,

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();
于 2012-05-02T16:17:13.793 回答
3

如果要在显示第二个表单后关闭第一个表单,请使用以下Form.Shown事件:

td.Shown += (o, e) => { this.Close(); }
td.Show();

对于其他可能有趣的事件,请查看Windows 窗体中的事件顺序。当然也可以立即关闭当前表单:

this.Close();
td.Show();
于 2012-05-02T16:17:06.357 回答
1

我做了这样的事情:

TicketDetails td = new TicketDetails(getTicketID());
td.Show();
this.Hide();
td.Close += (object sender, EventArgs e) =>
{
    td.Parent.Close();
};
于 2012-05-02T16:16:59.557 回答
0

只要 TicketDetails 不是模态的,那么 td.show() 之后的任何代码都会运行。

我还假设 Form1 是您项目的启动表单。如果是这种情况,那么使用 .close 将停止您的应用程序。

你试过这个:

TicketDetails td = new TicketDetails(getTicketID());
td.Show();
Form1.Hide();

这显然隐藏了 Form1

谢谢

保罗

于 2012-05-02T16:19:44.380 回答