总结
总结: 处理好bar之间的布局 ,
有3个需要注意的点 [ 设置DockSide的顺序(想象一下俄罗斯方块落下的顺序) , DockLine , Stretch , DockOffset ]
当然其它属性也很重要 , 但是粗略的布局 , 先需要注意这几点
"DevComponents.DotNetBar"是有点难用啊 , 并且网上相关教程也很少 , , ,
直接上代码
using DevComponents.DotNetBar;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class DockSiteBarManagerSample : Form
{
private DevComponents.DotNetBar.DotNetBarManager dotNetBarManager1;
private DevComponents.DotNetBar.DockSite dockSite4;
private DevComponents.DotNetBar.DockSite dockSite1;
private DevComponents.DotNetBar.DockSite dockSite2;
private DevComponents.DotNetBar.DockSite dockSite3;
private Bar bar1, bar2, bar3, bar4, bar5, bar6, bar7, bar8, bar9, bar10, bar11, bar12, bar13, bar14, bar15;
public DockSiteBarManagerSample()
{
InitializeComponent();
this.components = new System.ComponentModel.Container();
this.dotNetBarManager1 = new DevComponents.DotNetBar.DotNetBarManager(this.components);
this.dockSite4 = new DevComponents.DotNetBar.DockSite();
this.dockSite1 = new DevComponents.DotNetBar.DockSite();
this.dockSite2 = new DevComponents.DotNetBar.DockSite();
this.dockSite3 = new DevComponents.DotNetBar.DockSite();
this.dotNetBarManager1.BottomDockSite = null;
this.dotNetBarManager1.LeftDockSite = null;
this.dotNetBarManager1.ParentForm = this;
this.dotNetBarManager1.RightDockSite = null;
this.dotNetBarManager1.ShowCustomizeContextMenu = false;
this.dotNetBarManager1.UseGlobalColorScheme = false;
this.dotNetBarManager1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.dotNetBarManager1.ToolbarBottomDockSite = this.dockSite4;
this.dotNetBarManager1.ToolbarLeftDockSite = this.dockSite1;
this.dotNetBarManager1.ToolbarRightDockSite = this.dockSite2;
this.dotNetBarManager1.ToolbarTopDockSite = this.dockSite3;
this.dotNetBarManager1.TopDockSite = null;
this.dockSite4.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.dockSite4.Dock = System.Windows.Forms.DockStyle.Bottom;
this.dockSite4.Location = new System.Drawing.Point(0, 453);
this.dockSite4.Name = "dockSite4";
this.dockSite4.Size = new System.Drawing.Size(782, 0);
this.dockSite4.TabIndex = 3;
this.dockSite4.TabStop = false;
this.dockSite4.Visible = true;
this.dockSite1.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.dockSite1.Dock = System.Windows.Forms.DockStyle.Left;
this.dockSite1.Location = new System.Drawing.Point(0, 0);
this.dockSite1.Name = "dockSite1";
this.dockSite1.Size = new System.Drawing.Size(0, 453);
this.dockSite1.TabIndex = 0;
this.dockSite1.TabStop = false;
this.dockSite1.Visible = true;
this.dockSite2.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.dockSite2.Dock = System.Windows.Forms.DockStyle.Right;
this.dockSite2.Location = new System.Drawing.Point(782, 0);
this.dockSite2.Name = "dockSite2";
this.dockSite2.Size = new System.Drawing.Size(0, 453);
this.dockSite2.TabIndex = 1;
this.dockSite2.TabStop = false;
this.dockSite2.Visible = true;
this.dockSite3.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.dockSite3.Dock = System.Windows.Forms.DockStyle.Top;
this.dockSite3.Location = new System.Drawing.Point(0, 0);
this.dockSite3.Name = "dockSite3";
this.dockSite3.Size = new System.Drawing.Size(782, 0);
this.dockSite3.TabIndex = 2;
this.dockSite3.TabStop = false;
this.dockSite3.BackColor = System.Drawing.Color.Red;
this.Controls.Add(this.dockSite1);
this.Controls.Add(this.dockSite2);
this.Controls.Add(this.dockSite3);
this.Controls.Add(this.dockSite4);
BarsTest();
}
private void BarsTest()
{
bar1 = InitializeBar("bar1", eDockSide.Top);
bar2 = InitializeBar("bar2", eDockSide.Top);
bar3 = InitializeBar("bar3", eDockSide.Top);
bar1.Stretch = true;
bar1.DockLine = 3;
bar2.Stretch = false;
bar3.Stretch = false;
bar2.DockLine = 0;
bar3.DockLine = 0;
dotNetBarManager1.Bars.Add(bar3);
dotNetBarManager1.Bars.Add(bar1);
dotNetBarManager1.Bars.Add(bar2);
bar2.DockSide = eDockSide.Top;
bar3.DockSide = eDockSide.Top;
bar1.DockSide = eDockSide.Top;
bar1.LayoutType = DevComponents.DotNetBar.eLayoutType.Toolbar;
bar2.LayoutType = DevComponents.DotNetBar.eLayoutType.Toolbar;
bar3.LayoutType = DevComponents.DotNetBar.eLayoutType.Toolbar;
}
private Bar InitializeBar(string name, eDockSide eDockSide)
{
Bar bar = new Bar();
bar.Text = name;
bar.Name = name;
bar.AlwaysDisplayDockTab = true;
bar.CanCustomize = false;
bar.CanDockBottom = true;
bar.CanDockDocument = true;
bar.CanDockLeft = true;
bar.CanDockRight = true;
bar.CanDockTop = true;
bar.CanHide = true;
bar.CanUndock = true;
bar.ShowToolTips = true;
bar.Stretch = false;
bar.TabNavigation = true;
bar.TabStop = true;
bar.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar;
bar.Style = eDotNetBarStyle.Office2007;
bar.DockLine = 0;
bar.DockOffset = 10;
BarAddButtonTest(bar);
bar.DockSide = eDockSide;
return bar;
}
private void BarAddButtonTest(Bar bar)
{
var _fileToolStripMenuItem = new ButtonItem();
_fileToolStripMenuItem.Name = "fileToolStripMenuItem";
_fileToolStripMenuItem.Size = new System.Drawing.Size(180, 180);
_fileToolStripMenuItem.CanCustomize = true;
_fileToolStripMenuItem.UserCustomized = true;
_fileToolStripMenuItem.FontBold = true;
_fileToolStripMenuItem.FontItalic = true;
_fileToolStripMenuItem.FontUnderline = true;
_fileToolStripMenuItem.HotFontBold = true;
_fileToolStripMenuItem.HotFontUnderline = true;
_fileToolStripMenuItem.Category = "Standard";
_fileToolStripMenuItem.AccessibleRole = System.Windows.Forms.AccessibleRole.MenuItem;
_fileToolStripMenuItem.Text = "Test1111";
var test = new ButtonItem();
test.Text = "测试111";
test.Click += (sender, e) =>
{
MessageBox.Show("Test--click");
};
_fileToolStripMenuItem.SubItems.Add(test);
bar.Items.AddRange
(
new BaseItem[]
{
new ButtonItem { Text = "Button"+ bar.Name },
new TextBoxItem { Text = "TextBox"+ bar.Name },
new ButtonItem { Text = "Button"+ bar.Name },
_fileToolStripMenuItem,
}
);
}
}
}

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2015-09-06 分析器错误消息: 类型“test.test.testx”不明确: 它可能来自程序集“F:\testProject\bin\test.test.DLL”或程序集“F:\testProject\bin \testProject.DLL”。请在类型名称中显式指定程序集。