您可以使用当前的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);
}
}