【问题标题】:Showing the Restore Button without a Maximize button显示没有最大化按钮的恢复按钮
【发布时间】:2008-12-16 21:08:13
【问题描述】:

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

有没有办法做到这一点?

谢谢。

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

【问题讨论】:

    标签: c# winforms restore maximize


    【解决方案1】:

    我在工作中看到了一个与此类似的问题,我能找到的唯一解决方案是设置未记录的窗口样式,而我并不倾向于这样做。

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

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

    【讨论】:

    • 我想我可能不得不这样做。
    【解决方案2】:

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

    【讨论】:

    • 实际上,当我这样做时,它会将其移动到右上角,尽管它确实保持正确的大小
    • 在这个响应式设计的时代,我会考虑 John B 所说的——不要将“缩小”版本设为固定大小,至少允许对其进行一些调整。如果它移动到右上角,您可以使用FormStartPosition.CenterScreen 设置。
    【解决方案3】:

    FWIW,正确的答案是让您的表单正确调整大小,以适应任何窗口大小,而不是将用户限制在 您的 您的显示屏上分辨率和你的字体大小。不可调整大小的窗口是我在应用程序中遇到的最烦人的事情之一(Windows 本身就充满了)。

    【讨论】:

    • 你不明白,我并没有阻止用户调整表单的大小。发生的事情是当单击恢复按钮时,它将隐藏表单并打开一个控件较少的新表单。当他们在较小的表单上单击最大化时,它将返回到原始表单。
    • 但这不违反用户最小惊讶的原则吗?我希望 restore 将窗口恢复到我以前的浮动大小,并最大化以填充我的显示。
    • 这不是一个需要全屏显示的控件。
    • 也许在你的显示器上。具有 320x240 或 800x600 显示屏的手机或 PDA 用户呢?
    【解决方案4】:

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

    (如果我有特权,我更愿意将此作为评论添加到 Daemin 接受的答案中,这对于 StackOverflow 来说还是相对较新的)

    【讨论】:

      【解决方案5】:

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

      要扭转这种情况,您可以通过隐藏(或处置)子表单来“最大化”子表单,然后取消隐藏并将父表单设置为 FormWindowState.Maximized

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

      【讨论】:

        猜你喜欢
        • 2019-08-16
        • 1970-01-01
        • 2019-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-31
        相关资源
        最近更新 更多