我想阻止用户将 Windows 窗体最大化为全屏,因此我禁用了“最大化”按钮。但是,我希望能够让用户“恢复”表单。当他们单击“恢复”按钮时,我希望它显示一个不同的、更小的、缩小的表单,这将向他们显示一个最大化按钮,该按钮将返回到原始表单。

有没有办法做到这一点?

谢谢。

编辑:您不明白,我并没有阻止用户调整表单大小。发生的情况是,当单击“恢复”按钮时,它将隐藏表单并打开一个控件较少的新表单。当他们在较小的窗体上单击最大化时,它将返回到原始窗体。

有帮助吗?

解决方案

我在工作中遇到了与此类似的问题,我能找到的唯一解决方案涉及设置未记录的窗口样式,但我不愿意这样做。

因此,我认为解决您的问题的最佳解决方案是隐藏当前的最小化/最大化/恢复按钮并使用一些ownerdraw或其他命令添加您自己的按钮。

从用户交互的角度来看,我希望最小化/最大化/恢复按钮对您的应用程序执行与对所有其他应用程序执行的操作完全相同的操作。覆盖该功能会给您的用户带来困惑,因此我建议在标题栏或界面上的其他位置创建不同的按钮来执行此功能。

其他提示

FWIW,正确的答案是,让您的形式正确地调整,适应任何窗口的大小,而不是将用户限制到什么期待权上的的显示的的分辨率的的字体大小。非可调整大小的窗口是最讨厌的事情,我在一个应用程序中遇到一个(Windows本身充满了他们的)。

您可以设置MAXIMUMSIZE和和的minimumSize启用最大化按钮来获得这种效果。

我最近也有类似的情况,从UI设计的角度来看,发现在Windows Media Player中一个很好的例子。它留下的最小化,最大化和恢复按钮,因为他们,并具有对“切换到紧凑模式”的右下方有一个单独的按钮。而在小型/紧凑模式,同样的按钮切换到“切换到全屏模式”。另一个替代的例子是Skype的,其具有刚离开标准的最小化按钮附加系统图标按钮时,结构紧凑,标准模式之间切换。

(如果我有幸,我会一直优先把这个作为注释添加到Daemin的接受的答案,还是比较陌生的StackOverflow)

“恢复”形式将触发事件Resize在这里可以检查母体形式是不再FormWindowState.Maximized。如果没有,你可以打开子窗体和隐藏父。

要反转这一点,可以“最大化”通过隐藏(或处置)子形式,然后取消隐藏和母体形式设置为FormWindowState.Maximized

,我可以用这种方法看到的唯一问题是,Resize事件可能会多次闪光的形式达到Maximumized状态之前。可能需要一个标志,直到形式从当前状态转移到所希望的状态,这会导致无限循环忽略这些。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top