2008-12-16 52 views
1

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

有没有办法做到这一点?

谢谢。

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

回答

2

我在工作中看到了类似的问题,我可以找到唯一的解决方案,包括设置无证的窗口样式,这是我不愿意做的。

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

从用户交互的角度来看待这个问题,我希望最小化/最大化/还原按钮为您的应用程序完成与其他所有操作完全相同的操作。重写该功能会让用户感到困惑,因此我建议在标题栏或界面上的其他位置创建不同按钮来执行此功能。

0

您可以设置MaximumSize和MinimumSize并启用最大化按钮来获得这种效果。

+0

实际上,当我这样做时,它将它移动到右上角,虽然它确实保持正确的尺寸 – Malfist 2008-12-16 21:18:38

+0

在这个响应式设计的时代,我会考虑约翰B所说的 - 不要让“缩小” '版本是固定的大小,并且至少允许它在一定程度上调整大小。如果它移动到右上角,您可以使用“FormStartPosition.CenterScreen”设置。 – 2014-06-23 18:29:26

1

FWIW,正确的答案是,让您的形式正确地调整,适应任何窗口大小,而不是约束用户在什么你分辨率字号权看起来显示屏上。不可调整大小的窗口是我在应用程序中遇到的最烦人的事情之一(Windows本身充满了它们)。

+1

你不明白,我不阻止用户调整窗体大小。发生的事情是,当点击恢复按钮时,它会隐藏表单并打开一个新的控件,并且控件数量较少。当他们在较小的表单上单击最大化时,它将返回到原始表单。 – Malfist 2008-12-17 15:14:59

0

我最近有类似的情况,从UI设计的角度来看,在Windows Media Player中找到了一个很好的例子。最小化,最大化和恢复按钮保持原样,并在右下角有一个单独的按钮,用于“切换到紧凑模式”。在迷你/紧凑模式下,同一个按钮切换到“切换到完整模式”。另一个替代例子是Skype,它在标准最小化按钮的左边有一个额外的系统图标按钮,在紧凑和标准模式之间切换。

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

0

“恢复”形式将触发Resize事件,你可以检查父表单是否不再FormWindowState.Maximized。如果没有,您可以打开子窗体并隐藏父窗体。

要反转这一点,您可以通过隐藏(或丢弃)子表单来最大化子表单,然后取消隐藏并将父表单设置为FormWindowState.Maximized

我可以用这种方法看到的唯一问题是Resize事件可能会在表单达到最大化状态之前触发多次。一个标志可能需要忽略这些,直到表单从当前状态变为所需状态,这可能导致无限循环。