DevExpress 组件动态在PopupMenu中添加项

本文介绍如何使用 DevExpress 的 PopupMenu 控件动态添加菜单项,并解决按钮分组问题。通过 AddItem 方法及设置 BeginGroup 属性实现菜单项及分组的动态创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例中是:

private DevExpress.XtraBars.PopupMenu popupMenu1;
添加一些项:
 ((System.ComponentModel.ISupportInitialize)(this.popupMenu1)).BeginInit();
this.popupMenu1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
            new DevExpress.XtraBars.LinkPersistInfo(this.iCut),
            new DevExpress.XtraBars.LinkPersistInfo(this.iCopy),
            new DevExpress.XtraBars.LinkPersistInfo(this.iPaste),
            new DevExpress.XtraBars.LinkPersistInfo(this.iClear),
            new DevExpress.XtraBars.LinkPersistInfo(this.iFont, true),
            new DevExpress.XtraBars.LinkPersistInfo(this.iBullets)});
((System.ComponentModel.ISupportInitialize)(this.popupMenu1)).EndInit();
加入BeginInit  和 EndInit 才能正确显示

后来看到后面的博文,变通下,用这个方法:

popupMenu1.AddItem(new 一个 item);

如果加载已有的项目,则用:

popupMenu1.AddItem(new DevExpress.XtraBars.LinkPersistInfo(this.iCut).Item);

 

以下转自:http://www.cnblogs.com/cglNet/archive/2012/08/27/2658207.html

原文:DevExpress 组件动态在PopupMenu中添加项

由于使用DevExpress 的控件,需要在PopupMenu动态添加项。根据PopupMenu的后台代码,自己写怎么添加都不显示,不知道原因何在。代码如下:

            BarButtonItem tBBI = new BarButtonItem();

            tBBI.Name = "Item1";

            tBBI.Caption = "myItem";

            this.barManager1.Items.Add(tBBI);

            this.pPop.LinksPersistInfo.Add(new LinkPersistInfo(tBBI));

 

后来无意中,发现PopupMenu有一个AddItem方法,用了之后,可以了。很高兴。但问题接踵而至。按钮中的项,不能分组。继续找原因。知道发现这篇博客:

http://www.cnblogs.com/supermap/archive/2006/07/01/440418.html

很受启发,尤其是关键代码

        public PopupMenu CreateContextMenu()

        {

            PopupMenu contextMenu = new PopupMenu();

            contextMenu.Popup += new EventHandler(ContextMenuPopupHandler);

            foreach (object item in buildItems)

            {

                if (item is BarItem)

                {

                    bool beginGroup = false;

                    beginGroup = (bool)(item as BarItem).Tag;

                    //contextMenu.LinksPersistInfo.AddRange(new LinkPersistInfo[] { new LinkPersistInfo((item as             BarItem),         beginGroup) });

                    BarItem barItem = item as BarItem;

                    AddMenuItem(barManager, barItem);

                    //用LinksPersistInfo右键菜单不出来

                    //contextMenu.LinksPersistInfo.Add(new LinkPersistInfo(barItem, beginGroup));

                    BarItemLink itemLink = contextMenu.AddItem(barItem);

                    itemLink.BeginGroup = beginGroup;

                }

            }

            contextMenu.Manager = barManager;

            return contextMenu;

        }

另外一篇文章:http://www.cnblogs.com/supermap/archive/2006/07/01/440418.html

 

http://www.cnblogs.com/supermap/archive/2006/07/01/440418.html

转载于:https://www.cnblogs.com/xiangniu/archive/2013/02/21/2921227.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值