如何在我的 IDesigner 中更改分隔符颜色?

How to change separator color in my IDesigner?

我刚刚用设计器控件创建了我自己的库,从 System.ComponentModel.Design reference.So 我的应用程序中使用了一个 winform 设计器,就像 vs.But 我不喜欢那个白色的分隔符颜色,我怎么能改变它,因为我没有找到分隔符 color.I 的 属性 知道可以将分隔符颜色更改为灰色,因为 visual studio 分隔符是灰色的.. . 图片:第一张图片是设计器中的 visual studio 分隔符, 第二张图片是我的 IDesignerHost 设计器中难看的白色分隔符。 我试图在 IDesigner 和 IDesignerHost 中找到一些 属性 的分隔符颜色,但我没有找到..请帮助我..

我的图书馆 IDesignerHost 是如何工作的:

//surface is interface of my implemented designer,so i can get it as control
//to change basic properties,like backcolor,font,etc...
//but also i can get it as IDesigner and IDesignerHost
//but how to change a separator color?
DesignSurface surface = new DesignSurface();
Control view = surface.GetView(); //returns control or IDesigner/IDesignerHost
view.BackColor = Color.FromArgb(30, 30, 30);

您可以从 DesignSurface 的视图的 Controls 集合中获取拆分器。只要组件托盘中有组件,就会添加拆分器。所以你可以使用这段代码来改变分离器的颜色。

例子

您可以使用以下代码进行尝试。只需确保您已添加对 System.Design 程序集的引用并使用 System.LinqSystem.ComponentModel.Design 命名空间:

var surface = new DesignSurface();
var host = (IDesignerHost)surface.GetService(typeof(IDesignerHost));
surface.BeginLoad(typeof(Form));
var root = (Form)host.RootComponent;
host.CreateComponent(typeof(BindingSource), "bindingSource1");
var view = (Control)surface.View;
view.Dock = DockStyle.Fill;
view.BackColor = Color.White;
var splitter = view.Controls.OfType<Splitter>().FirstOrDefault();
if (splitter != null)
    splitter.BackColor = Color.Red;
else
{
    view.ControlAdded += (obj, args) =>
    {
        if (args.Control is Splitter)
            args.Control.BackColor = Color.Red;
    };
}
this.Controls.Add(view);

你会得到这样的结果: