关闭对话框表单关闭父表单

The*_*iot 4 .net c# krypton-toolkit winforms

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

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

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

    Visible = true;
    ShowInTaskbar = true;
}
Run Code Online (Sandbox Code Playgroud)

问题是,当Form2关闭时,它也会关闭Form1.我试过DialogResult = DialogResult.NoneForm2设置,但没有用.请帮我.

我一直在使用这种技术,这件事从未发生过.

Han*_*ant 7

是的,这段代码很麻烦.用户关闭对话框时出错.然后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...
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)