[英]C# How do I leave the maximized window as it is?
我正在使用Visual Studio 2010來執行C#GUI。
我目前面臨的問題是最大化一個窗口后,它會留在那里,但是當我轉到其他窗體時,該窗口將恢復到其原始大小。
單擊最大化按鈕后,如何在所有表單中完全離開最大化窗口?
這里是一個例子:
我想要的是當用戶最大化表單時,它會保持這種狀態,直到關閉程序或調整程序大小為止。
假設您正在使用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子MdiChildren
,以便在MDI子窗口上更改其FormWindowState
,MDI父窗體可以將更改應用於其每個子級,類似於共享FormWindowState方法。
這些想法只是我的腦海,但也許它們會帶您正確的方向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.