我正在开发 C++ CLI 应用程序,并且在处理事件时遇到一些困难。我想知道单击鼠标按钮时是否可以触发事件。例如,我想检查鼠标是否已移动到下一个方格(仅当他们单击鼠标时)。这意味着如果他们单击方格 1,他们应该能够按住该单击并移动方格 2 和我的程序认识到这一点。
我在鼠标上运行了许多不同的事件,包括“Click”事件,但是按下按钮时,悬停、鼠标进入或鼠标按下事件都不会被触发。 “MouseClick”事件,其作用相同。我尝试仅使用 mouseDown 事件,但这不会让另一个 mouseDown 事件、鼠标输入或悬停事件触发。
缺少检查鼠标位置我不知道我能做什么。我不想进行鼠标位置检查。
如果有人有任何想法,我们将不胜感激。
最佳答案
显然,您需要关注 MouseMove 事件,以便可以看到鼠标移动到另一个方 block 中。大致:
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);
}
}
}
如果这些“方 block ”实际上是控件,那么您就会遇到不同的问题。您必须在 MouseDown 事件处理程序中将控件的 Capture 属性设置为 false,这样它就不会捕获鼠标。
关于C++ CLI GUI 事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994460/