C# Как мне оставить развернутое окно как есть?
Я использую Visual Studio 2010, чтобы сделать мой C# GUI.
Текущая проблема, с которой я сталкиваюсь, заключается в том, что после максимизации окна оно остается там, но когда я перехожу к другим формам, окно возвращается к своему первоначальному размеру.
Как я могу оставить развернутое окно полностью для всех форм, как только я нажму кнопку развернуть?
Вот пример:
- Пользователь максимизирует форму А
- Форма А развернута
- Пользователь переходит на форму B
- Форма B возвращается к исходному размеру вместо развернутого окна
То, что я хочу, - когда пользователь максимизирует форму, она остается такой, пока программа не будет закрыта или изменена.
1 ответ
Предполагая, что вы используете WinForms, вы можете либо реализовать общий диспетчер FormWindowState, либо использовать контейнер Multiple 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.
Эти идеи не в моей голове, но, возможно, они приведут вас в правильном направлении.