EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:为自定义WinForms列表编辑器支持上下文菜单

在XAF应用程序中,列表视图可以使上下文菜单充满Actions。为此,显示列表视图的列表编辑器应支持IRequireContextMenuIRequireDXMenuManager接口。本主题介绍如何在如何:实现自定义WinForms列表编辑器主题中演示的WinCustomListEditor中实现这些接口。

下图说明了为WinCustomListEditor调用的上下文菜单。

PopupMenuForWinThumbnailEditor

注意

您可以在XAF随附的FeatureCenter演示中看到此处实现的代码。默认情况下,此演示位于%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ FeatureCenter文件夹中。

要在自定义列表编辑器中启用上下文菜单,请按以下方式修改其代码。

[ListEditor(typeof(IPictureItem))]
public class WinCustomListEditor : ListEditor, /* ...*/ IRequireContextMenu, IRequireDXMenuManager {
    #region IRequireContextMenu Members
    private void BarManager_QueryShowPopupMenu(object sender, QueryShowPopupMenuEventArgs e) {
        if (e.Control != control) {
            e.Cancel = true;
            e.BreakShowPopupMenu = false;
        }
    }
    public void SetMenu(PopupMenu popupMenu, BarManager barManager) {
        barManager.SetPopupContextMenu(control, popupMenu);
        barManager.QueryShowPopupMenu  = BarManager_QueryShowPopupMenu;
    }
        #endregion

        #region IRequireDXMenuManager Members
        public void SetMenuManager(IDXMenuManager menuManager) { }
        #endregion
}

如果使用EditorContainer控件的后代实现列表编辑器,请在SetMenuManager方法中初始化EditorContainer.MenuManager属性。

QueryShowPopupMenu事件处理程序中,可以使用e.Cancel参数指定是否取消显示控件当前区域的上下文菜单。例如,您可以对GridView控件使用以下逻辑。

GridHitTest hitTest = gridView.CalcHitInfo(gridControl.PointToClient(e.Position)).HitTest;
e.Cancel = !(((hitTest == GridHitTest.Row) || 
    (hitTest == GridHitTest.RowCell) || (hitTest == GridHitTest.EmptyRow) || 
    (hitTest == GridHitTest.RowDetail) || (hitTest == GridHitTest.None)));

转载保留此链接,注明出处