Предполагая, что вы используете WinForms, вы можете либо реализовать общий диспетчер FormWindowState, либо использовать контейнер Multi-Document Interface (MDI).
Shared FormWindowState
Вы можете зарегистрировать каждую из ваших форм в классе, отвечающем за распространение изменений в FormWindowState форм.
public class FormWindowStateManager {
List<Form> _Forms;
...
public void Register(Form form) {
if(!_Forms.Contains(form)) {
_Forms.Add(form);
form.Resize += new EventHandler(Form_Resize);
}
}
public void Unregister(Form form) {
if(_Forms.Contains(form)) {
_Forms.Remove(form);
form.Resize -= new EventHandler(Form_Resize);
}
}
private void Form_Resize(object sender, EventArgs e) {
Form form = sender as Form;
if(form != null) {
if(form.FormWindowState == FormWindowState.Maximized || form.FormWindowState == FormWindowState.Normal) {
PropagateWindowState(form.FormWindowState);
}
}
}
private void PropagateWindowState(FormWindowState state) {
foreach(Form form in _Forms) {
if(form.FormWindowState != state) {
form.FormWindowState = state;
}
}
}
}
MDI Контейнер
MdiParentForm.cs
IsMdiContainer = true;
MdiChildForm.cs
MdiParent = myParentForm; // instance of MdiParentForm
Вы можете перебирать дочерние элементы MDI формы, используя свойство MdiChildren
формы, чтобы при изменении дочернего окна MDI FormWindowState
родительская форма MDI могла применить изменение к каждому дочернему элементу, подобно общему FormWindowState подход.
Эти идеи не в моей голове, но, возможно, они приведут вас в правильном направлении.