2

我正在开发一个 c++ CLI 应用程序,并且在处理事件时遇到了一些困难。我想知道是否可以在单击鼠标按钮时触发事件。例如,我想检查鼠标是否已经移动到下一个方块,只有当他们点击鼠标时。这意味着如果他们点击方块 1,他们应该能够按住该点击并移动方块 2 和我的程序认识到这一点。

我已经在鼠标上运行了许多不同的事件,包括“单击”事件,但是在按下按钮时不会触发悬停、鼠标输入或鼠标按下事件。“MouseClick”事件,其作用相同。我尝试只使用 mouseDown 事件,但这不会让另一个 mouseDown 事件、鼠标进入或悬停事件触发。

没有检查鼠标位置,我不知道我能做什么。我不想做鼠标位置检查。

如果有人有任何想法,他们将不胜感激。

4

1 回答 1

2

显然,您需要注意 MouseMove 事件,以便您可以看到鼠标移动到另一个方块中。大致:

    void panel1_MouseMove(Object^ sender, MouseEventArgs^ e) {
        if ((e->Button & System::Windows::Forms::MouseButtons::Left) == 
                         System::Windows::Forms::MouseButtons::Left) {
            int square = MapPosToSquare(e->Location);
            if (square != currentSquare) {
                currentSquare = square;
                OnSquareClicked(currentSquare);
            }
        }
    }

如果这些“方块”实际上是控件,那么您将遇到不同的问题。您必须在 MouseDown 事件处理程序中将控件的 Capture 属性设置为 false,这样它就不会捕获鼠标。

于 2013-04-14T00:47:20.277 回答