0
如果我有一個包含子菜單項的上下文菜單,當我只是將鼠標懸停在主菜單項上時,是否可以停止彈出/顯示子菜單?如果是這樣,怎麼樣?禁用ContextMenuStrip懸停時的自動子菜單顯示
如果我有一個包含子菜單項的上下文菜單,當我只是將鼠標懸停在主菜單項上時,是否可以停止彈出/顯示子菜單?如果是這樣,怎麼樣?禁用ContextMenuStrip懸停時的自動子菜單顯示
每個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.
完美的作品,謝謝! 我注意到一些我從未見過的語法。我是新來的C#。我想這是一種重寫方法的C#?我會谷歌,瞭解更多。 – MrVimes
@MrVimes我使用的語法被稱爲'lambda表達式',它只是一個方便的方式來輕鬆地構建'delegate',代碼只是用來註冊'Opening'和'Click'事件處理程序。它不是'override',爲了覆蓋你必須從基類創建一些類繼承,並覆蓋那裏的基類方法。 –