グローバル変数 (一部のクラスでは静的) を現在のWindowState
. フォームのウィンドウ状態が変化するときは、その変数を設定し、新しいフォームを作成するとき (たとえば、コンストラクターで)、その変数からウィンドウの状態を読み取ります。
WindowStateChanged
イベントはありませんのでご注意ください。ただし、ウィンドウの状態を変更するとResize
イベントがトリガーされるため、それを使用できます。
これらすべてを基本クラスに入れることもできます。
public class FormBase : System.Windows.Forms.Form
{
private static FormWindowState _windowState = FormWindowState.Normal;
public FormBase()
{
WindowState = _windowState;
}
protected override void OnResize(EventArgs e)
{
_windowState = WindowState;
base.OnResize(e);
}
}
そして、本当に凝りたい場合は、すべてのフォームのフォーム状態を同期することができます:
public class FormBase : System.Windows.Forms.Form
{
private static List<FormBase> _allForms = new List<FormBase>();
private static FormWindowState _windowState = FormWindowState.Normal;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_allForms.Add(this);
WindowState = _windowState;
}
protected override void Dispose(bool disposing)
{
_allForms.Remove(this);
base.Dispose(disposing);
}
protected override void OnResize(EventArgs e)
{
_windowState = WindowState;
foreach (var form in _allForms)
{
if (form != this)
{
form.WindowState = WindowState;
}
}
base.OnResize(e);
}
}