Devexpress PopupMenu Closing 事件,如 Windows Contextmenu Closing 事件

Posted

技术标签:

【中文标题】Devexpress PopupMenu Closing 事件,如 Windows Contextmenu Closing 事件【英文标题】:Devexpress PopupMenu Closing event like Windows Contextmenu Closing event 【发布时间】:2013-10-17 20:54:30 【问题描述】:

我正在使用 Devexpress PopupMenu 在右键单击时显示。现在我想在关闭这个弹出菜单之前知道,就像 Windows ContextMenu Closing 事件一样。

PopupMenu 有 Closeup 事件,但在关闭后触发。其实我的目标是根据情况处理何时关闭弹出菜单。

有没有,我能做到吗?

【问题讨论】:

我已经检查了文档,你是对的 - 对于你所追求的,不存在任何事件。 +1 好问题。我说得对吗,简而言之,您想阻止用户关闭上下文菜单,直到您的代码允许它? 嗨,DeeMac,是的,我也想要。但现在做不到。我也试过检查所有虚拟会员,但没有成功。 【参考方案1】:

我发现了这个previous issue - 有人尝试使用 XtraBars.PopupMenu 做同样的事情,并且必须创建 BarManager 的子类并覆盖 BarSelectionInfo.ClosePopup 事件(也许你可以根据你的场景调整它)。示例项目附在问题上,并演示了在弹出菜单中选择日期并且菜单保持打开状态。

编辑

这是完整性的相关代码 - 每当弹出窗口即将关闭时,ClosePopup 就会触发,根据 BarManager 的文档:

当您在设计时将 BarManager 放置在表单上时,所有控件 发布 PopupContextMenu 扩展器属性(其标题在 属性窗口看起来像“barManager1 上的 PopupContextMenu”)

您可以使用此属性分配上下文菜单并实现覆盖。

在示例中,您根据某些条件从方法返回(取消事件) - 在这种情况下,Bar 的标记在表单中的事件上设置为 False,并在覆盖中选中。

      private void barEditItem1_EditValueChanged(object sender, EventArgs e) 
           popupMenu1.Manager.Bars[0].Tag = false;
      

       using DevExpress.XtraBars;
       using DevExpress.XtraBars.ViewInfo;

        public class MyBarManager : BarManager 
            protected override BarSelectionInfo CreateSelectionInfo() 
                return new MyBarSelectionInfo(this);
            
        

        public class MyBarSelectionInfo : BarSelectionInfo 
            public MyBarSelectionInfo(BarManager manager)
                : base(manager) 
            

            public override void ClosePopup(IPopup popup) 
                if (!(bool)Manager.Bars[0].Tag) 
                    Manager.Bars[0].Tag = true;
                    return;
                

                base.ClosePopup(popup);
            
        

【讨论】:

以上是关于Devexpress PopupMenu Closing 事件,如 Windows Contextmenu Closing 事件的主要内容,如果未能解决你的问题,请参考以下文章

Devexpress PopupMenu Closing 事件,如 Windows Contextmenu Closing 事件

[Dev]DevExpress之treelist右键菜单实现

[Dev]DevExpress之treelist右键菜单实现

DevExpress_常用控件02_RibbonControl

matlab GUI popupmenu怎么用?

Android popupMenu