簡體   English   中英

C#WPF最大化Window的位置

[英]C# WPF Maximized Window's position

我在使用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;          
       }
   }

如何確保最大化的窗口位於中央? 首先十分感謝。

在Window_StateChanged中時,您檢測到“最大化”將其設置回“正常”。 看一下這一點: 在wpf窗口中禁用最大化容量

您無法設置最大化窗口的位置。 根據定義,它將嘗試占據整個屏幕,因此始終將左上角定位為0,0。 您所需要做的就是攔截狀態更改事件,將窗口大小設置為最大值,然后將狀態設置回WindowState.Normal。

您可以通過重寫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 = 0ahahEwjPk9zUve3XAhVBGpQKHRCsAKEQFggkMAA&usg = AOvVaw1bgX8XejRP3t2tJ4txKQrq

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM