Как обработать щелчок в кнопке winforms, которая также имеет DragnDrop? - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть маленькая панель, которая поддерживает DragnDrop на MouseDown.Но у меня также есть событие MouseClick, которое я хочу обработать, если пользователь не перетаскивает поле.Как это сделать?Я попытался записать начальную позицию в MouseDown, затем измерить в MouseMove и вызвать DoDragDrop, когда она превысила 10 пикселей.Но я получаю маленький круг с косой чертой, как только щелкаю в поле.DoDragDrop поддерживается только на MouseDown?Я видел другой пост, похожий на этот, где предлагается измерять расстояние, но они не объясняют, как включить MouseClick вместо DoDragDrop ...

    private void oldPanel_MouseDown(object sender, MouseEventArgs e)
    {
        m_nStartDragPoint = new Point(e.X, e.Y);
    }

    private void oldPanel_MouseMove(object sender, MouseEventArgs e)
    {
        if (System.Math.Abs(e.X - m_nStartDragPoint.X) > 10 ||
            System.Math.Abs(e.Y - m_nStartDragPoint.Y) > 10)
        {
            oldPanel.DoDragDrop(oldPanel, DragDropEffects.Copy);
        }
    }

    private void oldPanel_Click(object sender, EventArgs e)
    {
        // do some stuff - not called currently
    }

1 Ответ

0 голосов
/ 13 декабря 2018

Решением этого или a решения было отслеживание как mouseDown, так и положения.MouseMove вызывается даже при наведении - на самом деле мышь не нужно нажимать.Так что он всегда вызывал DoDragDrop.

...