我正在对旧版 winforms 应用程序进行一些维护。该项目使用表单继承,这使我的工作变得更加轻松,但是有一个奇怪的问题。设置如下:
FormBase : Form
FormBaseList : FormBase
FormClientList : FormBaseList
我现在遇到的问题是属性 WindowsState。
我创建了一个新的 FormClientList。
FormClientList f = new FormClientList();
f.MdiParent = this;
f.show();
比我单击最大化按钮使其最大化。
现在我在 FormClientList 上有一个按钮(用于调试目的),向我显示属性 WindowState 的值,它返回最大化,正如我所料。
在 FormBaseList 中有一些代码需要知道这个属性的值,但在这里它总是返回正常,而不是最大化。该代码位于 datagridview 的双击上,它将创建另一个表单。
// code in FormBaseList
FormDetail detailForm = new FormDetail();
detailForm.MDIParent = this.MDIParent;
detailForm.Show();
if (this.WindowState == FormWindowState.Normal) // this = the maximized instance of FormClientList
{
// why do I get here when FormClientList is maximized ??
detailForm.Left = this.Left + 20;
detailForm.Top = this.Top + 20;
}
所以看起来这个表单的实例对于这个属性有不同的值,这取决于我从哪个类运行我的测试代码?
我该如何解决 ?