这就是我的数据存储在数据库中的方式。
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
我想在Ribbon控件上显示菜单/子菜单/文件名。如果有人做过这样的事情,请建议如何做到这一点。我创建了一个Ribbon Form然后Ribbon控件,添加了Bar Button Item。现在,我想在菜单中显示带有导航箭头的菜单,例如菜单1,菜单2,带有导航箭头的menu3,在悬停时显示子菜单和子菜单,如果其中有任何子元素,则再次显示箭头。
平台:VS2012,Windows应用程序,c#
答案 0 :(得分:1)
查看The List of Bar Items and Links帮助文章。
根据此文档,您应使用菜单(BarSubItem)项而不是按钮(BarButtonItem)项来表示功能区中的子菜单。
答案 1 :(得分: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));
}
}