従来の 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;
}
したがって、このフォームのインスタンスは、テストコードを実行するクラスに応じて、このプロパティの値が異なるようです。
これを修正するにはどうすればよいですか?