}
finally {
dotNetBarManager1.SuspendLayout=false; }
代码实现的界面如下图:
下面的代码通过编程的方式实现如下图所示的功能
private void Form1_Load(object sender, System.EventArgs e) {
dotNetBarManager1.DockTabChange+=new DotNetBarManager.DockTabChangeEventHandler(this.DockTabChanged);
CreateBottomBarAutoHide(); CreateLeftDockedBars(); }
private void DockTabChanged(object sender, DockTabChangeEventArgs e) {
// 使Bar的标题与当前停靠选项卡同步 Bar bar=sender as Bar;
if(bar==null || e.NewTab==null)
return;
bar.Text=e.NewTab.Text; }
private void CreateBottomBarAutoHide() {
Bar bar=new Bar(\Bar in auto-hide state\); bar.Name=\;
bar.LayoutType=eLayoutType.DockContainer; // 停靠容器布局需要可停靠窗口 bar.Stretch=true; // 可停靠窗口拉伸至填补容器
bar.AutoHideAnimationTime=0; // 一些控件不支持动画所以关掉它
bar.GrabHandleStyle=eGrabHandleStyle.Caption; // 可停靠窗口有标题
dotNetBarManager1.Bars.Add(bar); // DotNetBar需要添加bar以便能管理它的停靠等
// 创建托管控件
DockContainerItem DockItem=new DockContainerItem(\,\Dock item\);
bar.Items.Add(DockItem);
// 创建我们想放在可停靠窗口的控件
UserControl1 DockedControl=new UserControl1();
DockedControl.label1.Text=bar.Name+\- \+DockItem.Text; DockedControl.BackColor=Color.Azure;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上 DockItem.Height=128; // 指定可停靠容器的高度和同一时间控制
// 创建第二个停靠容器并添加到Bar中
DockItem=new DockContainerItem(\,\Dock item\); bar.Items.Add(DockItem);
DockedControl=new UserControl1();
DockedControl.label1.Text=bar.Name+\- \+DockItem.Text; DockedControl.BackColor=Color.Aquamarine;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
// 将Bar停靠到下面的停靠位置
dotNetBarManager1.BottomDockSite.GetDocumentUIManager().Dock(bar); DockItem.Height=128; // 指定可停靠容器的高度和同一时间控制
bar.RecalcLayout(); // 适用所有的变化...
bar.AutoHide=true; // 将Bar置为自动隐藏模式。Bar需要停靠的地方,才能置为自动隐藏模式 }
private void CreateLeftDockedBars() {
// 将前两个Bar并排停靠并将第三个Bar停靠在他们之后... Bar bar=new Bar(\); bar.Name=\;
bar.LayoutType=eLayoutType.DockContainer; // 停靠容器布局需要可停靠窗口 bar.Stretch=true; // 可停靠窗口拉伸至填补容器
bar.AutoHideAnimationTime=0; // 一些控件不支持动画所以关掉它
bar.GrabHandleStyle=eGrabHandleStyle.Caption; // 可停靠窗口有标题 bar.CanHide=true;
// 为Bar创建DockContainerItem,该项应该在Bar停靠前添加
DockContainerItem DockItem=new DockContainerItem(\,\Left Dock Container\);
bar.Items.Add(DockItem);
// 创建我们想放在可停靠窗口的控件
UserControl1 DockedControl=new UserControl1();
DockedControl.label1.Text=bar.Name+\- \+DockItem.Text; DockedControl.BackColor=Color.Khaki;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
dotNetBarManager1.Bars.Add(bar); // DotNetBar需要添加bar以便能管理它的停靠等 dotNetBarManager1.LeftDockSite.GetDocumentUIManager().Dock(bar); // 将Bar停靠到左边的可停靠位置
DockItem.Width=128; // 在停靠之后指定停靠容器项的宽度
// 创建第二个Bar并将它停靠低于第一个Bar但仍在同一行 Bar bar2=new Bar(\); bar2.Name=\;
bar2.LayoutType=eLayoutType.DockContainer; // 停靠容器布局需要可停靠窗口 bar2.AutoHideAnimationTime=0; // 一些控件不支持动画所以关掉它 bar2.Stretch=true; // 可停靠窗口拉伸至填补容器 bar2.CanHide=true;
bar2.GrabHandleStyle=eGrabHandleStyle.Caption; // 可停靠窗口有标题 // 添加新的停靠容器到Bar上,应该在添加Bar之前执行以便大小可以计算正确
DockItem=new DockContainerItem(\,\Left Dock Container\);
bar2.Items.Add(DockItem);
// 创建我们想放在可停靠窗口的控件 DockedControl=new UserControl1();
DockedControl.label1.Text=bar.Name+\- \+DockItem.Text; DockedControl.BackColor=Color.Lavender;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
dotNetBarManager1.Bars.Add(bar2); // DotNetBar需要添加bar以便能管理它的停靠等
dotNetBarManager1.LeftDockSite.GetDocumentUIManager().Dock(bar, bar2, eDockSide.Bottom); // 停靠新bar2低于我们先前创建的Bar
// 创建第三个Bar,停靠在第一个和第二个之后 // i.e. on the line 1 bar=new Bar(\); bar.Name=\;
bar.LayoutType=eLayoutType.DockContainer; // 停靠容器布局需要可停靠窗口 bar.AutoHideAnimationTime=0; // 一些控件不支持动画所以关掉它 bar.Stretch=true; // 可停靠窗口拉伸至填补容器 bar.CanHide=true;
bar.GrabHandleStyle=eGrabHandleStyle.Caption; // 可停靠窗口有标题
DockItem=new DockContainerItem(\,\Dock Container line 1\); bar.Items.Add(DockItem);
// 创建我们想放在可停靠窗口的控件 DockedControl=new UserControl1();
DockedControl.label1.Text=bar.Name+\- \+DockItem.Text; DockedControl.BackColor=Color.LemonChiffon;
DockItem.Control=DockedControl; // 指定该控件是托管在停靠容器上
dotNetBarManager1.Bars.Add(bar); // DotNetBar需要添加bar以便能管理它的停靠等
dotNetBarManager1.LeftDockSite.GetDocumentUIManager().Dock(bar);
// 设置停靠点的宽度并将bars按比例停靠在里面
// 但是这个尺寸应该大到足以容纳所有的Bar包括约束像MinimumSize等等 dotNetBarManager1.LeftDockSite.Width = 150; }
BaseItem::定义了DotNetBar使用的项的基类 示例:
BaseItem item = sender as BaseItem;
添加“菜单项“也可以通过两种方式实现 “可视化“的方式
在“设计器“里可以通过”右键“来实现; 程序的方法
private void CreateBar() { //创建Bar Bar bar=new Bar(\); bar.CanHide=true; bar.Style=eDotNetBarStyle.Office2003; bar.GrabHandleStyle=eGrabHandleStyle.StripeFlat; bar.WrapItemsDock=true; bar.WrapItemsFloat=false; // 向Bar内添加项 ButtonItem item, fileItem; // 添加新建菜单 item=new ButtonItem(\);
item.ImageIndex=0; // item.Image = imageList1.Images[0];
item.Text=\; item.Shortcuts.Add(eShortcut.CtrlN); item.Category=\; bar.Items.Add(item); m_DotNetBar.Items.Add(item.Copy()); // 这将创建类别条目 // 添加打开菜单 item=new ButtonItem(\); item.ImageIndex=1; item.Text=\; item.Shortcuts.Add(eShortcut.CtrlO); item.Category=\; bar.Items.Add(item); m_DotNetBar.Items.Add(item.Copy()); // 添加子菜单项到打开菜单,例如最近使用的文件之类的东西 fileItem=new ButtonItem(\); fileItem.Text=\File1.txt\; item.SubItems.Add(fileItem); fileItem=new ButtonItem(\); fileItem.Text=\File2.txt\; item.SubItems.Add(fileItem); fileItem=new ButtonItem(\); fileItem.Text=\File3.txt\; item.SubItems.Add(fileItem); fileItem=new ButtonItem(\); fileItem.Text=\File4.txt\; item.SubItems.Add(fileItem);