Не закрывайте ContextMenuStrip на выборе определенных объектов

Да, вы можете

(item.subitem || '').toString()
14
задан barry 15 May 2009 в 02:17
поделиться

4 ответа

Чтобы предотвратить закрытие контекстного меню при щелчке по элементу, выполните следующие действия.

В событии mousedown для ContextMenuItems установите флаг в значение false, а затем верните его в значение true в событии закрытия элемента contextmenu.

Пример:

Private blnClose As Boolean = True

Private Sub MoveUpToolStripMenuItem_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MoveUpToolStripMenuItem.MouseDown

     blnClose = False

End Sub

Private Sub ContextMenuStrip1_Closing(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripDropDownClosingEventArgs) Handles ContextMenuStrip1.Closing

     e.Cancel = Not blnClose
     blnClose = True

End Sub
3
ответ дан 1 December 2019 в 07:27
поделиться

Я не думаю, что для этого есть свойство в ContextMenuStrip.

Обходной путь, который мы используем в нашем приложении, заключается в том, что при щелчке по событию ContextMenuStrip мы выполняем некоторую обработку, затем, если мы хотим, чтобы контекстное меню оставалось открытым, мы просто снова вызываем ContextMenuStrip.Show

. Это будет хорошо работать, если в ContextMenuStrip есть только один уровень. Если есть подменю и подменю, вам придется повторно выбрать меню, которые были открыты до щелчка, и я не уверен, как это можно сделать ...

1
ответ дан 1 December 2019 в 07:27
поделиться

событие закрытия

устанавливает e.Cancel = true, чтобы меню оставалось открытым

единственная проблема заключается в том, что событие не сообщает вам, что было нажато, поэтому вы должны отслеживать об этом сами. установить какой-то флаг в событии Click для элементов, меню которых должно оставаться открытым. затем в событии закрытия проверьте флаг и установите e.Cancel соответствующим образом.

4
ответ дан 1 December 2019 в 07:27
поделиться

OnClosing, выполните: e.Cancel = e.CloseReason! = ToolStripDropDownCloseReason.CloseCalled; а затем, когда вы решите закрыть, вызовите Close ().

1
ответ дан 1 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: