У меня есть требование, чтобы скрыть контекстную меню, когда определенный флаг не установлен. Поскольку я не думаю, что мы можем явно контролировать показ / скрытие полосы контекстного меню, я решил уловить щелчок правой кнопкой мыши на элементе управления, с которым связана контекстная строка. Это UserControl, поэтому я попытался обработать событие MouseClick, внутри которого я проверяю, установлен ли флаг и является ли кнопка правой кнопкой. Однако, к моему изумлению, событие не запускается при щелчке правой кнопкой мыши, а срабатывает только при щелчке левой кнопкой мыши.
Что-то не так со мной или есть обходной путь?
ОБНАРУЖЕНА ПРАВЫЙ ЩЕЛЧОК, изменилось название и описание вопроса
Проведя еще какое-то исследование, я получил щелчок правой кнопкой мыши, когда я обработал событие Mouse_Down в элементе управления. Однако я до сих пор не знаю, как явно запретить загрузку ContextMenuStrip . Другой вопрос, почему MouseClick не обнаруживает щелчок правой кнопкой мыши?
Текущий WorkAround
Регистрация обработчика события
userControl1.Control1.MouseDown += new MouseEventHandler(Control1_MouseDown);
void Control1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right && flag == false)
{
userControl1.Control1.ContextMenuStrip = null;
}
else
{
userControl1.Control1.ContextMenuStrip = contextMenuStrip1;
}
}
это текущий обходной путь, который я делаю.
Но как я могу изменить его в событии открытия ContextMenuStrip