开发者

C# How do I leave the maximized window as it is?

I am using visual studio 2010 to do my C# GUI.

The current problem that I am facing is that after maximizing a window, it stays there but when I go to other forms, the window will go back to its original size.

How do I leave the maximized window all the way for all the forms, once I click the maximize button?

Heres an example:

  1. User maximizes Form A
  2. Form A maximized
  3. User goes to Form B
  4. Form B goes back to original size instead of a maximized window

What I want is when user maximizes a form, it开发者_JS百科 stays that way till the program is closed or resized.


Assuming you're using WinForms, you can have either implement a shared FormWindowState manager or use a Multiple Document Interface (MDI) container.

Shared FormWindowState

You can register each of your forms with a class responsible for propagating changes in forms' 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 Container

MdiParentForm.cs

IsMdiContainer = true;

MdiChildForm.cs

MdiParent = myParentForm; // instance of MdiParentForm

You can iterate through a form's MDI children using the form's MdiChildren property such that when on MDI child window changes its FormWindowState, the MDI parent form can apply the change to each of its children, similar to the shared FormWindowState approach.

These ideas are just off the top of my head but maybe they'll get you in the right direction.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜