Если вы запустили всплывающее окно из панели инструментов, вы можете создать подкласс для панели инструментов и добавить этот код.
override protected void OnItemClicked(ToolStripItemClickedEventArgs e)
{
if (this.Items.Count == 0)
base.OnItemClicked(e);
// else do nothing
}
Однако класс ContextMenu не имеет OnItemClicked, но имеет OnPopup. Я не пробовал, но вы можете попробовать создать подклассы ContextMenu
public class MyContextMenu : ContextMenu
{
override protected void OnPopUp(EventArgs e)
{
if (this.MenuItems.Count == 0)
base.OnPopUp(e);
// else do nothing
}
}
если это не сработает, вы можете переопределить два метода show
public class MyContextMenu : ContextMenu
{
override protected void Show (Control c, Point p)
{
if (this.MenuItems.Count == 0)
base.Show (c, p) ;
// else do nothing
}
override protected void (Control c, Point p, LeftRightAlignment z)
{
if (this.MenuItems.Count == 0)
base.Show (c, p, z) ;
// else do nothing
}
}