我有一個無邊界視窗,并在mousedown事件中設定了這樣的功能:當雙擊標題時,視窗最大化,當我再次雙擊它時,它最小化。到目前為止,這個功能是有效的,但是當我現在想添加DragMove的功能時,當視窗處于正常狀態,但是當我完成DragMove時,它自動變成了最大化。我怎樣才能避免這種情況呢?
我的MouseDown:
private void TopBorder_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
如果(e.ButtonState == MouseButtonState.Pressed)
{
this.DragMove()。
}
如果(e.ClickCount == 2 && this.WindowState == WindowState.Maximized)
{
this.WindowState = WindowState.Normal。
}
否則
{
this.WindowState = WindowState.Maximized。
}
}
uj5u.com熱心網友回復:
你需要一些東西來知道視窗拖動是否已經發生。也許有其他方法,但我通常使用一個bool。你可以使用MouseMove事件而不是LocationChanged
bool windowMoved = false;
然后對于后面的代碼,
this.LocationChanged = (s,e) => { windowMoved = true; };
或者從XAML中
WindowStyle="None" LocationChanged="Window_LocationChanged"
MouseDown="Window_MouseDown"
Title="MainWindow">
而且
private void Window_LocationChanged(object sender, EventArgs e)
{
windowMoved = true;
}
最后
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
windowMoved = false。
如果(e.ButtonState == MouseButtonState.Pressed)
{
this.DragMove()。
}
如果(windowMoved)
回傳。
如果(e.ClickCount == 2 && this.WindowState == WindowState.Maximized)
{
this.WindowState = WindowState.Normal。
}
否則
{
this.WindowState = WindowState.Maximized。
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307887.html
標籤:
上一篇:在WPF的不同類之間共享數值
