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