[英]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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.