Если у меня есть контекстное меню с элементами подменю, можно ли остановить всплывающее/отображаемое подменю, когда я просто навожу курсор на элемент главного меню? И если да, то как?
Отключить автоматическое отображение подменю при наведении в ContextMenuStrip
Ответы (1)
Каждый ToolStripDropDownItem
имеет свойство DropDown
(типа ToolStripDropDown
), относящееся к раскрывающемуся списку, который будет отображаться при наведении курсора мыши на элемент. В ToolStripDropDown
есть событие Opening
, которое позволяет легко отменить выпадающее меню. Используйте следующий код, все можно настроить в конструкторе формы:
//Suppose the item you want to suppress automatically showing
//the drop down is item1
bool clicked = false;
item1.DropDown.Opening += (s,e) => {
e.Cancel = !clicked;
clicked = false;
};
item1.Click += (s,e) => {
clicked = true;
item1.ShowDropDown();
};
//The code above disables the automatic dropping-down
//and shows the drop down by clicking on the item1.
person
King King
schedule
27.10.2013
Работает отлично, Спасибо! Я заметил некоторый синтаксис, которого никогда раньше не видел. Я новичок в С#. Я думаю, это способ переопределить методы С#? Я погуглю, чтобы узнать больше.
- person MrVimes; 27.10.2013
@MrVimes синтаксис, который я использовал, называется
lambda expression
, это просто удобный способ легко построить delegate
, код просто используется для регистрации обработчиков событий Opening
и Click
. Это не override
, чтобы переопределить, вам нужно создать некоторые классы, наследуемые от базового класса, и переопределить там базовые методы.
- person King King; 27.10.2013