gpt4 book ai didi

c# - 如何从另一个 MDI 子窗体关闭特定的 MDI 子窗体

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:00 25 4
gpt4 key购买 nike

我正在打开另一个 MDI 子窗体的 MDI 子窗体,它正在工作,但现在我必须以相同的方式关闭它,但没有任何反应。

这是我正在使用的代码示例:

private void checkbox1_CheckedChanged(object sender, EventArgs e)
{

Form1 newForm1 = new Form1();
newForm1.MdiParent = this.MdiParent;

if (checkbox1_CheckedChanged.Checked == true)
{
newForm1.Show(); //this is working
}
else
{
newForm1.Dispose(); //this is not working. I have tryed .Close(), .Hide()... unsucessfully.
}
}

解释:我在一个 mdi 子项中有这个复选框 1,当它被选中时,另一个 mdi 子项 (newForm1) 将打开,而当它未被选中时,这个 mdi 子项 (newForm1) 将关闭、隐藏或类似的东西。

有什么建议吗?谢谢!

最佳答案

您需要在表单集合中“找到”表单才能处理它:

private void checkBox1_CheckedChanged(object sender, EventArgs e) {
if (checkBox1.Checked) {
Form1 form1 = new Form1();
form1.MdiParent = this.MdiParent;
form1.Show();
} else {
Form found = this.MdiParent.MdiChildren.Where(x =>
x.GetType() == typeof(Form1)).FirstOrDefault();
if (found != null) {
found.Dispose();
}
}
}

这假设集合中只有一个 Form1 表单。


另一种方法是在检查更改方法范围之外声明表单变量:

Form1 form1;

private void checkBox1_CheckedChanged(object sender, EventArgs e) {
if (checkBox1.Checked) {
if (form1 == null || form1.IsDisposed) {
form1 = new Form1();
form1.MdiParent = this.MdiParent;
form1.Show();
}
} else {
if (form1 != null) {
form1.Dispose();
}
}
}

关于c# - 如何从另一个 MDI 子窗体关闭特定的 MDI 子窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16235938/

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