gpt4 book ai didi

c# - 关闭对话框窗体关闭父窗体

转载 作者:太空狗 更新时间:2023-10-30 00:45:59 26 4
gpt4 key购买 nike

我一直在处理奇怪的问题。我在项目中使用 KryptonForm。我有一个表单(比如 form1),我需要从这个表单中单击一个按钮来打开另一个表单。这是代码:

void btn_click(object sender, EventArgs e)
{
Visible = false;
ShowInTaskbar = false;

var f = new Form2();
f.ShowDialog();

Visible = true;
ShowInTaskbar = true;
}

问题是当 Form2 关闭时它也会关闭 Form1。我尝试从 Form2 设置 DialogResult = DialogResult.None 但无济于事。请帮助我。

我一直在使用这种技术,但从未发生过这种情况。

最佳答案

是的,这段代码很麻烦。当用户关闭对话框时出错。然后 Windows 必须找到另一个窗口以提供焦点。您的应用程序中没有任何剩余,您的主窗口是不可见的。然后它会选择另一个应用程序的窗口。例如,这很有可能是 Visual Studio 中的一个窗口。一个大的。您的主窗体现在消失在它后面。

您需要确保在对话框关闭之前您的主窗口再次可见。您可以通过订阅对话框的 FormClosing 事件处理程序来实现。例如:

    private void button1_Click(object sender, EventArgs e) {
using (var dlg = new Form2()) {
dlg.StartPosition = FormStartPosition.Manual;
dlg.Location = this.Location;
dlg.FormClosing += (s, ea) => this.Show(); // <=== Here
this.Hide();
if (dlg.ShowDialog() == DialogResult.OK) {
// etc...
}
}
}

关于c# - 关闭对话框窗体关闭父窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358753/

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