В Visual Studio 2022, C#, с простым кодом, как показано ниже, если вы нажмете правую кнопку мыши, WINFORM просто закроется, но событие мыши все еще активно и запускает событие правой мыши на рабочем столе Windows и отображает соответствующее контекстное меню:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
MouseDown += Form1_MouseDown;
}
private void Form1_MouseDown(object? sender, MouseEventArgs e)
{
Close();
}
}
Есть ли способ предотвратить это, не показывая контекстное меню окон?
Кстати, к Visual Studio это не имеет никакого отношения.
Вы используете неправильное событие.
В Winforms при нажатии кнопки мыши вы получаете следующие события в следующем порядке:
Событие MouseDown
срабатывает первым, но не единственным.
Поскольку вы закрываете форму, наведя курсор мыши, следующие события обрабатываются операционной системой, поэтому вы получаете контекстное меню в результате события MouseUp, когда вы нажимаете правую кнопку.
Если вы хотите обработать это правильно, вы можете использовать событие MouseClick
или MouseUp
.
Для получения дополнительной информации прочитайте документацию.
Некоторые типы элементов управления WİnForm (например, ToolStripButton) не имеют члена MouseClick, поэтому наиболее подходящим является использование MouseUp, это помогло с решением, спасибо
Я считаю, что без каких-то действительно противных хуков вы не сможете... просто использовать MouseUp...