Cor*_*urn 5 c# mouse click mouseevent mouseclick-event
我正在重新制作windows Minesweeper(来自XP),他们所包含的内容是,如果你同时用鼠标左键单击一个带有尽可能多的旗号的数字,它会显示该数字周围的所有其他隐藏的牌.
我很难知道何时同时按下左右鼠标按钮......我正在使用一对bool,每个按钮一个,OnMouseDown和OnMouseUp事件,但如果是2个按钮在完全相同的时间(或非常接近)单击,然后只有一个MouseDown事件关闭而另一个没有...如果您单击并按住其中一个按钮然后单击并按住另一个,代码可以正常工作.
有没有更好的方法来检测这种"双重"点击?
编辑:
好吧,小故事为什么我把它搞砸了(它一直都有效).
我有一个运行Windows 7的macbook pro.对于那些不知道的人,macbook pro只有一个鼠标按钮栏,通常会留下点击,但是如果你放下2个手指就可以点击右键,这样你就可以'两者都做(并且没有中间点击).所以我正在构建我的应用程序并将其发送给我的朋友,他告诉我它不起作用,所以我发布了这个问题.我终于决定在我的另一台笔记本电脑上试用它,带有2个鼠标按键的戴尔XPS ......一旦它在那里工作,我将它传递给其他朋友,他们确认它有效.我不知道我的第一个朋友是如何搞砸了,但故事的道德是不要买任何苹果.至少那是我得到的道德.
为左右按钮创建一个类布尔变量,默认为false.当鼠标按下事件触发时,将变量设置为true并检查两者是否都为真.当鼠标向上触发时将变量设置为false.
public bool m_right = false;
public bool m_left = false;
private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
m_objGraphics.Clear(SystemColors.Control);
if (e.Button == MouseButtons.Left)
m_left = true;
if (e.Button == MouseButtons.Right)
m_right = true;
if (m_left == false || m_right == false) return;
//do something here
}
private void MainForm_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
m_left = false;
if (e.Button == MouseButtons.Right)
m_right = false;
}
Run Code Online (Sandbox Code Playgroud)