gpt4 book ai didi

.net - 如何检测是否同时按下了左右按钮?

转载 作者:行者123 更新时间:2023-12-01 12:01:15 25 4
gpt4 key购买 nike

我想在控件上进行三个鼠标操作:向左、向右和同时进行。

我有左键和右键,目前正在使用中间按钮作为第三个按钮,但我很好奇我如何使用同时按下的左右按钮,以应对用户使用没有中间键的鼠标的情况按钮。这将在自定义控件的 OnMouseDown 方法中处理。

更新在查看了建议的答案之后,我需要澄清一下,我试图做的是在 MouseDown 事件(实际上是控件的 OnMouseDown 方法)中对鼠标单击采取行动。因为当同时单击鼠标的左右按钮(每个按钮一个)时,.NET 似乎总是会引发两个 MouseDown 事件,所以我猜唯一的方法就是执行一些低级 Windows 消息管理或在 MouseDown 之后实现某种 Action 的延迟执行。最后,使用鼠标中键更简单。

现在,如果操作发生在 MouseUp 上,那么 Gary 或 nos 的建议会很有效。

如果您对此问题有任何进一步的见解,我们将不胜感激。谢谢!

最佳答案

总是有“自己动手”的方法:

只需记住按钮按下和释放的状态。在 OnMouseDown 中,您只需记住按下的按钮,而在 OnMouseUp 中,只需检查记住了哪些按钮,以及清除按钮的状态。

您需要一些逻辑来在释放按钮时不执行多个操作。有点像

MouseButtons buttonPressed;
..

void OnMouseDown(MouseEventArgs e)
{
buttonPressed |= e.Button;
}


void OnMouseUp(MouseEventArgs e)
{
if(!doneAction) {
if((buttonPressed & MouseButtons.Right == MouseButtons.Right
&& buttonPressed & MouseButtons.Left == MouseButtons.Left)
|| buttonPressed & MouseButtons.Middle== MouseButtons.Middle) {
DoMiddleAction();
doneAction = true;
} else if(check Right button , etc.) {
....
}
}

buttonpressed &= ~e.Button;
if(buttonpressed == None)
doneAction = false;

}

关于.net - 如何检测是否同时按下了左右按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1182893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com