我正在使用visual studio 2010来完成我的C#GUI。
我面临的当前问题是,在最大化窗口后,它会停留在那里,但当我转到其他窗体时,窗口将恢复到原始大小。
单击最大化按钮后,如何为所有表单保留最大化窗口?
以下是一个例子:
我想要的是当用户最大化表单时,它会保持这种状态,直到程序关闭或调整大小。
答案 0 :(得分:1)
假设您正在使用WinForms,您可以实现共享的FormWindowState管理器或使用多文档接口(MDI)容器。
您可以使用负责在表单'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;
}
}
}
}
MdiParentForm.cs
IsMdiContainer = true;
MdiChildForm.cs
MdiParent = myParentForm; // instance of MdiParentForm
您可以使用表单的MdiChildren
属性遍历表单的MDI子项,以便在MDI子窗口更改其FormWindowState
时,MDI父表单可以将更改应用于其每个子项,类似到共享的FormWindowState方法。
这些想法只是我的头脑,但也许他们会让你朝着正确的方向前进。