同时检测鼠标左键和右键?

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 ......一旦它在那里工作,我将它传递给其他朋友,他们确认它有效.我不知道我的第一个朋友是如何搞砸了,但故事的道德是不要买任何苹果.至少那是我得到的道德.

buc*_*ova 8

为左右按钮创建一个类布尔变量,默认为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)