DevExpress navBarControl 和 xtraTabbedMdiManager实现浏览器标签页效果
一:navBarControl 属性设置
工具箱中的Navigation & Layout选项卡下找到NavBarControl,拖到窗体中
工具箱中添加2个imageCollection。分别设置Item的大小图标集合,选择相应图片添加到集合中。(大图标32*32,小图标16*16)
navBarControl 属性面板中:
Dock设置为Left ; ParntStyleName皮肤样式,设置为SkinNav:Xmas 2008 Blue
NavigationPaneMaxVisibleGroups,默认值为-1,显示全部Group; 修改为0,即一个都不显示
Run Designer进行Group和Items的添加,Item添加好拖到相应的Group下面即可。
Group属性——》GroupCaptionUseImage,为Group按钮添加图标,设置图标显示方式,小图标或大图标,默认显示小图标。
a:从ImageCollection集合中选择图片(设置LargeImageIndex / SmallImageIndex=0),设置成相应图片下标即可。
b:或者直接设置属性LargeImage / SmallImage 选择需要图标。
Item属性——》 GroupStyle,为Item按钮添加图标,设置图标的显示样式,默认为图标在左边文字在右边,默认显示小图标。
LargeIconsText图标在上方,文字在下方。 添加图标同Group属性 a,b相同。
二: xtraTabbedMdiManager实现浏览器标签页效果
1:添加多文档标签界面:
public void OpenMDIWindow(String ChildTypeString, Object[] args) { if (String.IsNullOrWhiteSpace(ChildTypeString)) return; var fullName = String.Format("{0}.{1}", GetType().Namespace, ChildTypeString); if (ContainMDIChild(fullName)) return; Type typForm = Assembly.GetExecutingAssembly().GetType(fullName); if (typForm == null) return; Object obj = typForm.InvokeMember( null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, args); if (obj == null) return; Form myChild = obj as Form; myChild.MdiParent = this; myChild.WindowState = FormWindowState.Maximized; myChild.Show(); }
2:判断是否已经显示该子窗体
//判断MDI中是否已存在当前窗体 private Boolean ContainMDIChild(String ChildTypeString) { foreach (Form f in MdiChildren) { if (f.GetType().ToString() == ChildTypeString) { f.Select(); return true; } } return false; }
3:navBarControl事件LinkPressed调用(注意:Item.Tag需要设置成窗体的Name)
private void navBarControl1_LinkPressed(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e) { if (e.Link.Item.Tag != null) { try { OpenMDIWindow(e.Link.Item.Tag.ToString(), null); } catch (Exception ex) { Log.WriteLog(ex.ToString(), UserInfo.LoginName); } } }
最终效果图如下: