Мое приложение имеет следующую конфигурацию интерфейса:
Основная форма - это контейнер MDI. Его дочерние формы прикреплены к TabStrip
.
У каждого пользователя есть свой набор дочерних форм. В зависимости от активного пользователя отображаются только дочерние формы этого пользователя вместе с вкладками.
Это достигается путем просмотра MdiChildren
основной формы и установки для их свойства Visible
значения false/true
в зависимости от активного пользователя.
foreach (Form item in MdiChildren)
{
if (((OfficeFormEx)item).UserID == (int)e.NewTab.Tag)
{
item.Visible = true;
}
else
{
item.Visible = false;
}
}
Это имеет два нежелательных эффекта. Одна из них заключается в том, что каждая дочерняя форма перерисовывается последовательно, что уродливо и медленно. Другой заключается в том, что по какой-то причине формы переходят от максимизированных к нормальным, эффективно отрывая их от основной формы.
Есть ли способ отобразить только одну из дочерних форм, например ту, на которую ранее смотрел пользователь, и заставить другие остаться в фоновом режиме? Максимальное / нормальное значение не так уж и много, потому что я могу снова максимизировать их вручную.