一个可以做出类似VS的免费控件,下载网址:http://sourceforge.net/projects/dockpanelsuite/
方便应用,做了一些修改:
1.修改双击关闭(在DockPaneStripBase的WndProc方法里)
else if (m.Msg == (int)Win32.Msgs.WM_LBUTTONDBLCLK)
{
base.WndProc(ref m);
int index = GetHitTest();
if (DockPane.DockPanel.AllowRedocking && index != -1)
{
IDockContent content = Tabs[index].Content;
try {
//注释为原句
// content.DockHandler.IsFloat = !content.DockHandler.IsFloat;
//替换为
content.DockHandler.Close();
}
catch { }
}
return;
}
2.解决背景图片的问题(DockPanel的OnPaint方法里)
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//注释以下这两句
//Graphics g = e.Graphics;
// g.FillRectangle(SystemBrushes.AppWorkspace, ClientRectangle);
}
3.解决背景色无法改变问题(VS2005DockPaneStrip的OnPaint方法里)
protected override void OnPaint(PaintEventArgs e)
{
if (Appearance == DockPane.AppearanceStyle.Document)
{
//注释以下这两句
//if (BackColor != SystemColors.Control)
// BackColor = SystemColors.Control;
}
else
{
if (BackColor != SystemColors.ControlLight)
BackColor = SystemColors.ControlLight;
}
base.OnPaint (e);
CalculateTabs();
if (Appearance == DockPane.AppearanceStyle.Document
&& DockPane.ActiveContent != null)
{
if (EnsureDocumentTabVisible(DockPane.ActiveContent, false))
CalculateTabs();
}
DrawTabStrip(e.Graphics);
}
4.改变标签颜色(VS2005DockPaneStrip)
private static Brush BrushDocumentActiveBackground { get { return new LinearGradientBrush(new Rectangle(0, 0, 1, 1),
Color.FromArgb(232, 242, 254),
Color.FromArgb(232, 242, 254), 1);/*SystemBrushes.ControlLightLight;*/ } } private static Brush BrushDocumentInactiveBackground { get { return new LinearGradientBrush(new Rectangle(0, 0, 1, 1),
Color.FromArgb(173, 193, 220),
Color.FromArgb(173, 193, 220), 1); } //SystemBrushes.ControlLight; } }