[英]C# WPF - DragMove window and Click Event
我正在構建一個無邊界的應用程序。 我需要實現的是通過簡單地單擊並拖動它包含的圖像來移動窗口,但是我也想在單擊時做一些事情。
只是一個按鈕,我具有左鍵和右鍵單擊的功能,但現在不知道如何實現拖動。 這就是我的代碼
private void btnHome_MouseDown(object sender, MouseButtonEventArgs e)
{
if(e.LeftButton == MouseButtonState.Released)
{
toggle();
}
else if(e.LeftButton == MouseButtonState.Pressed)
{
DragMove();
}
}
現在只有拖拽有效,如果我重新排列它們的出現,那么只有左鍵起作用。 右鍵單擊功能現在可以按預期工作。
編輯 :好吧,我發現了問題! 您正在聽Mouse Down Event !!!!
只需將新事件鏈接到以下新函數=]
private void btnHome_MouseUp(object sender, MouseButtonEventArgs e)
{
toggle();
}
private void btnHome_MouseDown(object sender, MouseButtonEventArgs e)
{
DragMove();
RaiseEvent(new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, MouseButton.Left)
{
RoutedEvent = MouseLeftButtonUpEvent
});
}
一旦DragMove()
方法返回,即釋放鼠標捕獲后,請執行以下操作:
private void btnHome_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
DragMove();
System.Diagnostics.Debug.Write("some action...");
}
}
或者,如果您想在捕獲鼠標之前執行某些操作,則可以使用布爾標志:
private bool _capture;
private void btnHome_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
if (_capture)
{
DragMove();
_capture = false;
}
else
{
System.Diagnostics.Debug.Write("some action...");
_capture = true;
btnHome.RaiseEvent(new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, MouseButton.Left)
{
RoutedEvent = MouseDownEvent
});
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.