当用户调整和调整程序窗口(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;

关于c# - 当窗口最大化时获得非最大化的窗口位置/大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30165918/

10-12 00:29
查看更多