簡體   English   中英

當窗口最大化時獲得非最大化的窗口位置/大小

[英]Obtain non-maximized window position/size when window is maximized

當用戶調整大小並調整程序窗口(Winforms)的位置時,即使關閉並重新打開該程序,他們也希望窗口處於相同位置。 我要做的是存儲表單的Width,Height,Location.X和Location.Y屬性,並在重新打開程序時將其設置回原位。

問題是當窗口最大化時,寬度,高度,X,Y不是指未最大化的寬度/高度/ X / Y,而是指最大化的尺寸。

因此,當用戶使窗口最大化時,關閉並重新打開該程序,然后取消窗口最大化,而不是返回到原始位置/大小,而是停留在完整的大小/位置。

因此,在某些事件執行后,無需使用kudge來存儲變量,當窗口最大化時,如何獲得非最大化的位置和大小?

我發現解決此問題的最佳方法是使用RestoreBounds結構。 當窗口最大化時,RestoreBounds將引用舊的(未最大化)大小和位置。 這是找出這些值的代碼。 只需在關閉時保存這些值,然后在重新打開程序時,就可以將表單的Width,Height,Location.X和Location.Y設置回這些保存的值。

bool b = WindowState == FormWindowState.Maximized;
int xpos = !b? Location.X : RestoreBounds.X;
int ypos = !b? Location.Y : RestoreBounds.Y;
int width = !b? Width : RestoreBounds.Width;
int height = !b? Height : RestoreBounds.Height;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM