2010-07-28 43 views
0

我做了一个自定义窗口为我的应用程序和我写了一些代码,如果用户单击我的自定义最大化按钮:最大化自定义窗口,包括任务栏

private void MaxThis(object sender, System.Windows.RoutedEventArgs e) 
    { if (WindowState == WindowState.Maximized){ 
     WindowState = WindowState.Normal;} 

    else { 
    this.Top = 0; 
    this.Left = 0; 
    this.MaxWidth = System.Windows.SystemParameters.WorkArea.Width; 
    this.MaxHeight = System.Windows.SystemParameters.WorkArea.Height; 
    this.WindowState = WindowState.Maximized; 
    } 
    } 

的恢复到正常状态正常工作。但是,当我想要最大化时,它会使屏幕右侧和底部的边距保持最小。再次点击最大化以某种方式修复此问题。如何解决这个问题,以便在第一次点击时最大化?

+0

你试过在每个连续的调试最大化/标准化点击并查看实际设置的值?也许你没有考虑到窗口边界,边距等事情。我猜这是WPF? – SirDemon 2010-07-28 14:01:58

+0

你猜对了:)事情是我没有任何边框或边距设置,它都是零... – internetmw 2010-07-28 14:03:18

+0

关于如何调试和获取屏幕值的任何提示? – internetmw 2010-07-28 14:33:41

回答

0

尝试使用刚刚

this.WindowState = WindowState.Maximized; 

也许码,搞乱Windows API的行动之前进入。


对不起,我的错。 然后你应该使用Windows API来提高最大化事件。 试试这个代码:

[DllImport("user32.dll")] 
public static extern int SendMessage(
    int hWnd,  // handle to destination window 
    uint Msg,  // message 
    long wParam, // first message parameter 
    long lParam // second message parameter 
); 
public const int WM_SIZE = 0x0005; 
public const int SIZE_MAXIMIZED = 2; 

而且在点击事件:

SendMessage(this.Handle, WM_SIZE, SIZE_MAXIMIZED, 0); 
+2

不能使用这个,因为那么窗口也会覆盖我的任务栏... – internetmw 2010-07-28 14:02:33

2

带走你在XAML为您的窗口中设置的高度和宽度属性

相关问题