打开事件后,ContextMenuStrip打开事件不会触发

时间:2009-08-20 07:56:51

标签: c# windows winforms

大家好,

我有一个附加了ContextMenuStrip的UserControl。

我想根据控件表面上单击的对象显示ContextMenu。

问题是,在第一次启动时,当我右键单击控件的表面时,contextMenuStrip不显示!

我在contextMenuStrip_opening和contextMenuStrip_opened事件中都设置了断点,但似乎只触发了contextMenuStrip_opening。

发生了什么事?

在什么情况下contextMenuStrip没有出现?

请帮忙。

4 个答案:

答案 0 :(得分:1)

我没有做标记e.Cancel = true或不分配控件的事情。如果是的话,我已经通过调试进行了战斗。

我不知道为什么,但是我在ContextMenuStrip_Opening事件处理程序的开头添加e.Cancel = false然后它工作正常。

答案 1 :(得分:1)

我在UserControl上遇到了一些问题,但是e.Cancel = false对我不起作用

我使用下一个

 private void itemMenu_Opened(object sender, EventArgs e)
    {
        this.itemMenu.Focus();
    }

答案 2 :(得分:0)

如果症状是ContextMenuString根本没有显示,我打赌你的代码会将true分配给e.Cancel事件处理程序中的Opening属性。

如果菜单显示,但未调用Opened事件处理程序,我的猜测是Opened事件的事件处理程序由于某种原因未附加。

答案 3 :(得分:0)

尽管问题已经存在很久了,但希望将来有需要的人能够看到它。

我有同样的问题。 根据{{​​1}}开幕活动的来源:

ContexMenuStrip

CancelEventArgs openEventArgs = new CancelEventArgs(/*cancel=*/(DisplayedItems.Count == 0)); OnOpening(openEventArgs); openingEventCancelled = openEventArgs.Cancel; if (!openingEventCancelled) { // do the actual work to open the window. if (TopLevel) { ReparentToActiveToolStripWindow(); } //...other logics finally{ if (!openingEventCancelled) { OnOpened(new EventArgs()); } } 时,打开事件Args DisplayedItems.Count == 0

因此,当您在打开事件中将某些ContextMenuItems设置为true时,以及在关闭事件或打开事件后的其他事件中将所有ContextMenuItems设置为false时,都会发生这种情况。