最大化自定义窗口以包含任务栏

时间:2010-07-28 13:52:29

标签: c#

我为我的应用程序创建了一个自定义窗口,如果用户单击我的自定义最大化按钮,我会编写一些代码:

    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;
    }
    }

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

2 个答案:

答案 0 :(得分:2)

删除您在XAML中为窗口设置的高度和宽度属性

答案 1 :(得分:0)

尝试使用

this.WindowState = WindowState.Maximized;

也许是代码,在搞乱Windows API操作之前就已经开始了。


抱歉,我的错误。 然后,您应该使用Windows API来引发Maximize事件。 试试这段代码:

[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);