0

这就是我的数据存储在数据库中的方式。

id    parentId      menu                   filename

1     0             Menu1     

2     1             Sub Menu 1.1     

3     0             Menu2     

4     3             Sub Menu2.1    

5     3             Sub Menu2.2  

6     5             My file                D:\a.txt

7     0             Menu 3     

8     7             My file (menu3)        D:\b.txt

我想在功能区控件上显示菜单/子菜单/文件名。如果有人做过这样的事情,请建议如何做到这一点。我创建了一个功能区表单,然后是功能区控件,添加了条形按钮项。现在在这里我想显示带有导航箭头的菜单 egmenu1、menu2、menu3 和导航箭头,在悬停时显示子菜单和子菜单再次显示箭头,如果其中有任何子元素。

平台:VS2012,windows应用,c#

4

2 回答 2

1

看看The List of Bar Items and Links帮助文章。
根据此文档,您应该使用 Menu( BarSubItem ) 项而不是 Button( BarButtonItem ) 项来表示功能区中的子菜单。

于 2014-02-05T14:56:44.267 回答
0
    private void AddMenu(string menuName, int id, int parentId, string fileName)
    {
        BarSubItem subitem = CreateSubItem(menuName, id, fileName);

        if (parentId != 0)
        {
            BarSubItem parentItem = ribbon.Items.FindById(parentId) as BarSubItem;
            parentItem.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(subitem));
        }
        else
        {                
            menuBarSubItem.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(subitem));
        }
    }

    private BarSubItem CreateSubItem(string menuName, int id, string fileName)
    {
        BarSubItem subitem = new BarSubItem(ribbon.Manager, menuName);
        subitem.Id = id;
        if (!string.IsNullOrEmpty(fileName))
            subitem.Glyph = System.Drawing.Image.FromFile("file.png");
        return subitem;
    }

    private void AddMenuItem(string menuName, int id, int parentId, string fileName)
    {
        BarButtonItem buttonItem = new BarButtonItem(ribbon.Manager, menuName);
        buttonItem.Id = id;
        buttonItem.Tag = fileName;
        buttonItem.ItemClick += buttonItem_ItemClick;

        if (!string.IsNullOrEmpty(fileName))
            buttonItem.Glyph = System.Drawing.Image.FromFile("file.png");
        if (parentId != 0)
        {
            BarSubItem parentItem = ribbon.Items.FindById(parentId) as BarSubItem;
            parentItem.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(buttonItem));
        }
        else
        {
            menuBarSubItem.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(buttonItem));                
        }
    }
于 2014-02-20T11:13:09.247 回答