Добрый день,
Я хотел бы проверить, может ли кто-нибудь помочь мне в решении следующей проблемы, с которой я столкнулся. У меня есть дочерняя форма, отображаемая с помощью ShowDialog(this)
, и я регистрируюсь на событие Resize
, чтобы я мог изменить состояние родителя вместе с дочерним. Проблема в том, что когда родительская форма свернута, дочерняя форма закрывается. Я определил, что вызов WindowState = FormWindowState.Minimized
в родительском элементе приводит к тому, что оператор using
передает блокирующий вызов ShowDialog(IWin32Window)
, но я не понимаю, когда минимизируется только дочерний элемент (и родитель не может получить фокус) вызов блокировки не передается. Как мне обойти это поведение? Желательно не держать ссылку на дочернее окно и проверять ее каждый раз, когда изменяется WindowState
родителя.
Мой код:
private void StockTakeHistoryMenu_Click(object sender, EventArgs e)
{
using (StockTakeWindow window = new StockTakeWindow())
{
window.Resize += this.ChildStateChanging;
window.ShowDialog(this);
window.Resize -= this.ChildStateChanging;
}
}
private void ChildStateChanging(object sender, EventArgs e)
{
switch ((sender as Form).WindowState)
{
case FormWindowState.Normal:
this.WindowState = FormWindowState.Normal;
break;
case FormWindowState.Minimized:
this.WindowState = FormWindowState.Minimized;
break;
case FormWindowState.Maximized:
this.WindowState = FormWindowState.Maximized;
break;
}
}