簡體   English   中英

C#WPF-DragMove窗口並單擊事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM