0

関連する質問(詳細)

トンネリングイベントとContextMenu

ContextMenuを関連付けたWPFキャンバスがあります。

これはカッコいい。次に、RightDoubleClickでアクションを実装する必要があります...

実際、右マウスのClickCount ==2..で受信することはありません。

何をすべきか?
単純な(右)クリックでContextMenuを表示し、Action2OnRightDoubleClickを実行する必要があります。

protected override void OnPreviewMouseRightButtonUp(MouseButtonEventArgs e)
{
    if (e.ClickCount == 1)
    {
        #region SINGLE CLICK
        stillSingleClick = true;
        Thread thread = new Thread(
            new System.Threading.ThreadStart(
                delegate()
                {
                    Thread.Sleep(System.Windows.Forms.SystemInformation.DoubleClickTime);
                    this.Dispatcher.Invoke(
                        System.Windows.Threading.DispatcherPriority.Background,
                        new Action(
                            delegate()
                            {
                                if (stillSingleClick)
                                {
                                    base.OnPreviewMouseRightButtonUp(e);
                                }
                                stillSingleClick = false;
                            }
                    ));
                }
        ));
        thread.Start();
        #endregion SINGLE CLICK
    }
    else if (e.ClickCount == 2)
    {
        stillSingleClick = false;
        base.OnPreviewMouseRightButtonUp(e);
    }
}
4

3 に答える 3

1

MouseButtonEventArgs.ClickCountダウン イベントではなくアップ イベントを処理しているため、常に 1 になります。PreviewUp と Up の両方が常に 1 になります。通常、クリック動作は、それぞれのボタンのダウン イベントとして定義されます。

于 2010-12-16T16:44:03.060 に答える
0

でこれを行うMouseDoubleClickEvent

if (e.ChangedButton == MouseButton.Right)
{
     //do something with Mouse Right Double Click
}
于 2010-12-16T17:59:49.420 に答える
-1

MSDN で次の例を確認してください

private void OnMouseDownClickCount(object sender, MouseButtonEventArgs e)
{
    //Handle only right clicks
    if (e.RightButton != MouseButtonState.Pressed) return;

    // Checks the number of clicks.
    if (e.ClickCount == 1)
    {
        // Single Click occurred.
        lblClickCount.Content = "Single Click";
    }
    if (e.ClickCount == 2)
    {
        // Double Click occurred.
        lblClickCount.Content = "Double Click";
    }
    if (e.ClickCount >= 3)
    {
        // Triple Click occurred.
        lblClickCount.Content = "Triple Click";
    }
}
于 2010-12-16T16:43:54.683 に答える