Обнаружить оба левых и правых щелчка мышью одновременно?

Я переделываю окна Minesweeper (от XP) и что-то, что они включали, был то, что при нажатии на число столькими же флагов, сколько это - число с левой и правой кнопкой мыши одновременно, он показывает любую скрытую мозаику вокруг того числа.

Мне нелегко говорить, когда оба Левые и правые кнопки мыши нажимаются в то же самое время... Я использую пару bools, один для каждой кнопки с событиями OnMouseDown и OnMouseUp, но если эти 2 кнопки нажаты в то же самое время (или действительно закройтесь), то только одно Событие mouseDown уходит, и другой не делает... Если Вы нажимаете и удерживаете одну из кнопок, затем нажимают и содержат другой, работы кода все же.

Существует ли лучший способ обнаружить этот вид "двойного" щелчка?

Править:

В порядке, маленькая история для того, почему я испортил это (она работала все время).

У меня есть MacBook Pro, запускающий Windows 7. Для тех из Вас, кто не знает, MacBook Pro имеет единственную панель для кнопки мыши, которая обычно щелкает левой кнопкой, но если Вы помещаете 2 пальца вниз, он щелкает правой кнопкой, таким образом, Вы не можете сделать и (и никакой способ щелкнуть средней кнопкой). Таким образом, я создавал свое приложение и отправлял его моему другу, он говорил мне, что оно не работало, таким образом, я отправил этот вопрос. Я наконец решил попробовать его на своем другом ноутбуке, Dell XPS с 2 кнопками мыши... После того как это работало там, я передал его другим друзьям, и они подтвердили, что это работало. Я не знаю, как мой первый друг испортил его, но мораль истории, ничего не покупают Apple. По крайней мере это - мораль, которую я получил.

5
задан Ola Ström 23 January 2019 в 10:52
поделиться

3 ответа

Создайте логическую переменную класса для левой и правой кнопок со значением по умолчанию 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;
     }
8
ответ дан 13 December 2019 в 22:01
поделиться

Попробуйте это,

Private Sub Form_Click(... , ByVal e As ystem.Windows.Forms.MouseEventArgs)

If e.Button = MouseButtons.Right And e.Button = MouseButtons.Left Then
MsgBox ('Right & Left code')

End If
0
ответ дан 13 December 2019 в 22:01
поделиться

Полный код:

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left) leftPressed = true;
        else if (e.Button == MouseButtons.Right) rightPressed = true;


        if (leftPressed && rightPressed)
        {
            MessageBox.Show("Hello");

            // note: 
            // the following are needed if you show a modal window on mousedown, 
            // the modal window somehow "eats" the mouseup event, 
            // hence not triggering the MouseUp event below
            leftPressed = false;
            rightPressed = false;
        }


    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left) leftPressed = false;
        else if (e.Button == MouseButtons.Right) rightPressed = false;
    }
2
ответ дан 13 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: