gpt4 book ai didi

c# - 如何关闭C#程序,从第二种形式(不是隐藏)C# Multiform issue

转载 作者:行者123 更新时间:2023-11-30 20:01:06 24 4
gpt4 key购买 nike

问题:我创建了一个有两种形式的程序。当在 Form1 上按下按钮时,程序“隐藏”Form1 并“显示”Form2。问题是,当我关闭 Form2 时,程序继续在后台运行,我相信这是因为程序需要关闭 Form1,而不是隐藏以便程序结束。

我的问题是如何覆盖第二个表单以关闭程序而不是隐藏?

    private void btnCreate_Click(object sender, EventArgs e)
{
Form2.Show();
Form1.Hide();
}

我知道我可以从 Form2 再次显示 Form1,然后关闭,但我真的很想避免这种情况。

最佳答案

根据您的应用程序,您有几种选择。

第一个直观的解决方案是为 Form1 调用 Close() 而不是 Hide()。仅当 Form1 不是您的应用程序的主要 形式(主消息循环内的那个以 Application.Run() 开始)时才有效。

第二种解决方案是为 Form2FormClosed 事件添加事件处理程序,并在关闭第二个表单时关闭第一个表单:

private void btnCreate_Click(object sender, EventArgs e)
{
Form2.Show();
Form2.FormClosed += new FormClosedEventHandler(delegate { Close(); });
Form1.Hide();
}

您可以直接关闭 Form1 或调用 Application.Exit()(如果您打开了多个表单,您希望一起关闭)。

最后的解决方案是让第二个窗体成为第一个窗体的所有者:

private void btnCreate_Click(object sender, EventArgs e)
{
Form2.Show();
Form1.Owner = Form2;
Form1.Hide();
}

当所有者关闭时,这将自动关闭拥有的表单。这是我更喜欢的解决方案,但它仅适用于一种形式(所有者只能拥有一种形式)。

关于c# - 如何关闭C#程序,从第二种形式(不是隐藏)C# Multiform issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19515931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com