Ответ 1
Вы должны ввести литье внутри обработчика события click
MouseEventArgs me = (MouseEventArgs) e;
У меня есть способ обнаружить событие щелчка левой кнопкой мыши, которое визуальная студия сделана двойным щелчком по форме.
private void pictureBox1_Click(object sender, EventArgs e)
{
MessageBox.Show("Left click");
}
Я хочу иметь щелчок правой кнопкой мыши, щелкнув правой кнопкой мыши на том же объекте.
Я читал онлайн, что вы можете использовать этот переключатель:
private void pictureBox1_Click(object sender, EventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right){MessageBox.Show("Right click");}
if (e.Button == System.Windows.Forms.MouseButtons.Left){MessageBox.Show("Left click");}
}
Проблема в том, что когда я это делаю, у button есть красная строка и ошибка:
"'System.EventArgs' does not contain a definition for 'Button'... "
Поэтому я исправляю это, изменяя "EventArgs e" на "MouseEventArgs e"
Но тогда в Form1Designer появляется новая ошибка, где строка события:
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
Ошибка говорит:
"No overload for 'pictureBox1_Click' matches delegate 'System.EventHandler' "
Как это исправить? Спасибо за чтение
Вы должны ввести литье внутри обработчика события click
MouseEventArgs me = (MouseEventArgs) e;
Вам нужен MouseClick
вместо Click
обработчик событий, ссылка.
switch (e.Button) {
case MouseButtons.Left:
// Left click
break;
case MouseButtons.Right:
// Right click
break;
...
}
Для меня не работало событие MouseClick или Click, потому что события просто не вызываются при щелчке правой кнопкой мыши. Быстрый способ сделать это:
private void button1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//do something here
}
else//left or middle click
{
//do something here
}
}
Вы можете изменить это, чтобы делать то, что вы хотите, от значений аргументов.
ПРЕДУПРЕЖДЕНИЕ: Существует один улов с использованием только мыши. если вы mousedown на элементе управления, а затем вы перемещаете курсор из элемента управления, чтобы освободить его, вы все равно получите событие. Чтобы этого избежать, вы также должны убедиться, что мышь вверх происходит внутри элемента управления в обработчике событий. Проверка правильности координат курсора мыши в прямоугольнике управления до того, как вы проверите кнопки, сделает это правильно.
Использовать событие MouseClick вместо Click