Вы можете сохранить глобальную переменную (статическую для некоторого класса) с текущим 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);
}
}