【问题标题】:Prevent maximize from task manager (WPF application)防止从任务管理器最大化(WPF 应用程序)
【发布时间】:2017-09-07 16:56:25
【问题描述】:

我阅读了一些关于如何防止 WPF 应用程序最大化的答案,其中大多数都有效。

     ResizeMode="CanMinimize"

工作正常。

但是,用户仍然可以转到任务管理器并从那里最大化一个窗口:

这会导致一些问题。

一种建议的解决方案是监听StateChanged 事件,如下所示:

this.StateChanged += new System.EventHandler((sender, eventArgs) =>
{
   if (this.WindowState == System.Windows.WindowState.Maximized)
   {
      this.WindowState = System.Windows.WindowState.Normal;
   }
}

这也有效,但它给出了一个“闪烁”的动画,窗口转到左上角,然后立即返回到它的原始位置。所以在某种程度上,它有效,但对眼睛不好。

有没有办法在状态改变事件被执行之前处理它?类似BeforeStateChange

【问题讨论】:

  • 我认为没有 P-invoke 这是不可能的:/
  • 很抱歉发布了无用的 cmets,但是当用户决定竭尽全力(TaskManager)来克服您的预期布局时,我真的不会担心“眼睛很漂亮”。您应该确定用户尝试最大化您的窗口是否是错误的(提示:用户永远不会错,但通常是一无所知!)或者您是否错误地决定了与用户不愉快的窗口大小超大字体的windows设置。

标签: c# wpf


【解决方案1】:

一种可能的解决方案是显式设置最大窗口大小。由于CanMinimize 模式意味着您无法调整窗口大小,因此您可以像这样限制它的大小:

<Window
    MaxHeight="{Binding Height, RelativeSource={RelativeSource Self}}"
    MaxWidth="{Binding Width, RelativeSource={RelativeSource Self}}">
    <!-- ... -->
</Window>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多