我的 C# 应用程序有两种形式。主窗体将其 ControlBox 设置为 false,然后创建第二个窗体,如下所示:
this.ControlBox = false;
new Form2().Show();
第二种形式能够最小化和最大化。我需要主窗体 WindowState 属性能够在窗口最小化 或返回其正常 状态时从子窗体进行设置。
我遇到的问题是当我尝试最小化子窗口时程序崩溃。
这是我的代码:
private void Form2_SizeChanged(object sender, EventArgs e)
{
if(this.WindowState != FormWindowState.Maximized)
this.Parent.WindowState = this.WindowState;
}
我该如何解决这个问题?
最佳答案
您的问题是 Form2
Parent
属性为 null,调用 Show()
方法实际上并未设置 Parent
所显示表单的属性(在调试器中检查)。最简单的解决方法是通过 Form2
(称为 Form
)的构造函数传递 Form1
(调用 Form
)引用然后使用该引用来设置 WindowState
属性。像这样:
public partial class Form2 : Form
{
Form1 form1;
public Form2(Form1 frm)
{
InitializeComponent();
form1 = frm;
this.SizeChanged +=Form2_SizeChanged;
}
private void Form2_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState != FormWindowState.Maximized)
form1.WindowState = this.WindowState;
}
}
与 Form1 的代码相比,您可以更改为:
this.ControlBox = false;
Form2 frm = new Form2(this);
frm.Show();
关于c# - 如何从子窗体设置父窗体 WindowState 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203839/