首页 > 解决方案 > 我有一个要在处理父表单的面板时销毁的表单,我该怎么做?

问题描述

实例化过程是这样的:

  1. 表格 (a) 已创建
  2. 用户选择创建具有第二种形式 (b) 的面板的选项
  3. 用户单击第二个表单中的按钮,该按钮创建一个子表单 (c)。

我有一个关闭表单 1 的按钮,但是当它被触发时,子表单 (3) 保持活动状态并且不会关闭。

这是上面列表中的第 2 项。

private void serialListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            var serialForm = new SerialForm();
            SerialFormPanel.Controls.Add(serialForm);
            serialForm.Show();
        }

这是上面列表中的第 3 项。

private void SerialFormButton_Click(object sender, EventArgs e)
        {
            var popUp = new PopUp();
            popUp.Show();
        }

表单 (a) 上有一个按钮,它将关闭表单 (a),我希望它也关闭由单击上面的按钮创建的弹出窗口。

private void changeEnvregionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var changeEnv = new ChangeEnv();
            changeEnv .Show();
            SerialFormPanel.Dispose();
            this.Close();
        }

但是,SerialFormPanel.Dispose();不会关闭弹出窗口,也不会触发 thenSerialForm_FormClosing事件。

我认为对 popUp 表单的引用将保存在 SerialForm 的控件变量下或 SerialForm 对象中它自己的变量中。但我似乎找不到对 popUp 对象的引用。

当我创建一个新表单时var popUp = new PopUp(); popUp.Show();,该对象的引用到底是在哪里实例化的,我如何访问它,以便在 serialForm 表单也被销毁时销毁 popUp 表单?它是在实例化子表单的表单范围内创建的,还是在全局范围内创建的?

标签: c#winforms

解决方案


推荐阅读