【问题标题】:C# WPF Maximized Window's positionC# WPF 最大化窗口的位置
【发布时间】:2017-12-01 18:50:16
【问题描述】:

我在使用 WPF 和 C# 创建的应用程序中有一个窗口。我设置了 MaxHeight=200、MaxWidth=500 和 StartupLocation=CenterScreen。但是,最大化此窗口使其位于屏幕的左上区域,即:不再位于中心!即使我在最大化的条件下在Window_StateChanged事件中设置了Left=200和Top=200,最大化的窗口总是在左上角。

  private void Window_StateChanged(object sender, EventArgs e)
   {
       if (this.WindowState == WindowState.Maximized)
       {
       //   Left = System.Windows.SystemParameters.WorkArea.Width - Width;
          Left = 200;
        //  Top = System.Windows.SystemParameters.WorkArea.Height - Height;
         Top = 200;          
       }
   }

我应该怎么做才能确保最大化的窗口位于中心? 提前非常感谢。

【问题讨论】:

    标签: c# wpf window maximize


    【解决方案1】:

    当在 Window_StateChanged 中检测到 Maximized 时,将其设置回 Normal。看看这个:disable maximize capacity in a wpf window

    【讨论】:

    • 谢谢,这可以正常工作,但恢复窗口并不能将其恢复到正常的宽度和高度。请问有什么提示吗?
    • 我的意思是,点击最大化按钮后,我需要它变成还原按钮,因为它没有。
    • 嗯,您可以在处理 Window_StateChanged 时执行此操作,例如重新设置大小。但我认为你需要的是一个对话框。看看这个:docs.microsoft.com/en-us/dotnet/framework/wpf/app-development/…
    【解决方案2】:

    您无法设置最大化窗口的位置。根据定义,它试图占据整个屏幕,因此总是将左上角定位到 0,0。 您所能做的就是拦截 State changed 事件,将窗口大小设置为最大值,然后将 State 设置回 WindowState.Normal

    【讨论】:

    • 谢谢,这可以正常工作,但恢复窗口并不能将其恢复到正常的宽度和高度。请问有什么提示吗?
    • 我的意思是,点击最大化按钮后,我需要它变成还原按钮,因为它没有。
    • 您将无法自动执行此操作,因为您正在劫持 Maximize 函数。如果拦截状态更改,请将之前的大小存储在某处。然后,您需要创建自己的恢复按钮,因为 Window 认为它在 WindowState.Normal
    【解决方案3】:

    您可以通过覆盖 WndProc 来做到这一点

    protected override void WndProc( ref Message m ) 
       { 
           if( m.Msg == 0x0112 ) //WM_SYSCOMMAND
           { // Check your window state here
               if (m.WParam == new IntPtr( 0xF030 ) ) // Maximize event - SC_MAXIMIZE from Winuser.h  
           { // THe window is being maximized }
           }
           base.WndProc(ref m);
        }
    

    更多参考请查看此链接 https://www.google.co.in/url?sa=t&source=web&rct=j&url=https://stackoverflow.com/questions/1295999/event-when-a-window-gets-maximized-un-maximized&ved=0ahUKEwjPk9zUve3XAhVBGpQKHRCsAKEQFggkMAA&usg=AOvVaw1bgX8XejRP3t2tJ4txKQrq

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2015-10-16
      • 2017-11-24
      • 2012-02-29
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多