更改ToolStripSeparator控件的BackColor

时间:2013-04-10 12:52:08

标签: c# toolstrip

是否可以更改ToolStripSeparator控件的BackColor? 设计器中有一个BackColor属性,但它似乎没有被使用 - 颜色总是白色。

4 个答案:

答案 0 :(得分:3)

默认的toolstrip渲染器会忽略BackColor属性并使用硬编码颜色。

您可以参考以下链接,使用您自己的渲染器按照您希望的方式绘制分隔符。

http://social.msdn.microsoft.com/forums/en-US/winforms/thread/6cceab5b-7e06-40cf-82da-56cdcc57eb5d

答案 1 :(得分:3)

我看到2年前问过这个问题,但我仍然无法在网上找到一个简单明了的解决方案。所以......

我今天刚遇到问题,发现解决它很简单。

具有相同的情况:

enter image description here

<强>解决方案:

创建一个继承ToolStripSeparator类的类,并向Paint EventHandler添加方法以绘制分隔符:

public class ExtendedToolStripSeparator : ToolStripSeparator
{
    public ExtendedToolStripSeparator()
    {
        this.Paint += ExtendedToolStripSeparator_Paint;
    }

    private void ExtendedToolStripSeparator_Paint(object sender, PaintEventArgs e)
    {
        // Get the separator's width and height.
        ToolStripSeparator toolStripSeparator = (ToolStripSeparator)sender;
        int width = toolStripSeparator.Width;
        int height = toolStripSeparator.Height;

        // Choose the colors for drawing.
        // I've used Color.White as the foreColor.
        Color foreColor = Color.FromName(Utilities.Constants.ControlsRelatedConstants.standardForeColorName);
        // Color.Teal as the backColor.
        Color backColor = Color.FromName(Utilities.Constants.ControlsRelatedConstants.standardBackColorName);

        // Fill the background.
        e.Graphics.FillRectangle(new SolidBrush(backColor), 0, 0, width, height);

        // Draw the line.
        e.Graphics.DrawLine(new Pen(foreColor), 4, height / 2, width - 4, height / 2);
    }
}

然后添加分隔符:

ToolStripSeparator toolStripSeparator = new ExtendedToolStripSeparator();

this.DropDownItems.Add(newGameToolStripMenuItem);
this.DropDownItems.Add(addPlayerToolStripMenuItem);
this.DropDownItems.Add(viewResultsToolStripMenuItem);
// Add the separator here.
this.DropDownItems.Add(toolStripSeparator);
this.DropDownItems.Add(exitToolStripMenuItem);

<强>结果:

enter image description here

答案 2 :(得分:2)

我刚刚指出了我的分隔符&#39;将事件绘制到此自定义过程:

doHeavyWork(params, callbackFunction);

CUSTOM_COLOR_FOREGROUND是一个实体/命名颜色,例如Color.White。

答案 3 :(得分:0)

http://www.c-sharpcorner.com/uploadfile/mahesh/toolstrip-in-C-Sharp/

请参考以上链接。我希望能帮到你!