0

我正在对旧版 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;
}

所以看起来这个表单的实例对于这个属性有不同的值,这取决于我从哪个类运行我的测试代码?

我该如何解决 ?

4

0 回答 0