c# - 我有一个要在处理父表单的面板时销毁的表单,我该怎么做?
问题描述
实例化过程是这样的:
- 表格 (a) 已创建
- 用户选择创建具有第二种形式 (b) 的面板的选项
- 用户单击第二个表单中的按钮,该按钮创建一个子表单 (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 表单?它是在实例化子表单的表单范围内创建的,还是在全局范围内创建的?
解决方案
推荐阅读
- node.js - 将图像转换为 base64 字符串的应用程序在有头和无头模式下运行时会在浏览器的控制台上显示不同的结果。有谁知道为什么?
- android - DOMException:支付应用程序返回了 RESULT_CANCELED 代码。这就是支付应用程序以编程方式关闭其活动的方式
- python - 如何将一行从一个电子表格复制到另一个
- node.js - 尝试在 MongoDB 中插入来自 post 请求的数据时出错:MongooseError: Operation `posts.insertOne()` 缓冲在 10000 毫秒后超时
- python - 使用字典创建线图
- mysql - 错误 1045 (28000): 拒绝用户 'powerdns_user'@'localhost' 的访问(使用密码:是)
- php - PHP/MariaDB 使用嵌套 JSON 数组进行重复键更新
- python - 无法从特定目录导入函数
- python - mypy 可能的循环定义:TypedDict 类属性是父类引用
- c# - GET 查询中的列之间的类型不匹配。仅返回 NULL 时如何定义返回列类型?