如何在Winforms控件ToolStrip的角落中移除这个奇怪的视觉瑕疵?

15
这是显示问题的图片。请看右下角。
有人知道如何去掉它吗?
LayoutStyle 设置为 VerticalStackWithOverflow 可以解决问题,但也会水平居中项目,这不是我想要的。
我只想要一个垂直堆栈,就像图片中那样,但没有右下角的黑线。 enter image description here

1
我一直想知道那个小小的行是什么意思。 - Igby Largeman
很高兴我不是唯一一个 :O - Joan Venge
3个回答

16

很抱歉来晚了,但被接受的答案不能满足我的需求。以下解决方案是我想出来的:

去除黑线

1)创建自定义渲染器:

class CustomToolStripProfessionalRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        // Don't draw a border
    }
}

2)使用自定义渲染器:

toolStrip1.Renderer = new CustomToolStripProfessionalRenderer();

去除背景

上述解决方案满足了原问题的需求,但我不喜欢 ToolStrip 上的渐变背景。我希望 ToolStrip 成为一个“无形”的容器:

1)创建自定义颜色表:

class CustomProfessionalColorTable : ProfessionalColorTable
{
    public override Color ToolStripGradientBegin
    {
        get { return SystemColors.Control; }
    }

    public override Color ToolStripGradientMiddle
    {
        get { return SystemColors.Control; }
    }

    public override Color ToolStripGradientEnd
    {
        get { return SystemColors.Control; }
    }
}

2) 使用自定义颜色表:

class CustomToolStripProfessionalRenderer : ToolStripProfessionalRenderer
{
    public CustomToolStripProfessionalRenderer()
        : base(new CustomProfessionalColorTable())
    {

    }

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        // Don't draw a border
    }
}

14
在属性栏中,将"RenderMode"设置为"System"或使用。
.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;

这样做将会把.BackColor更改为"Control",但如果您想要的话,之后可以更改它。


我实际上已经检查过了,它在设置为 System 之前和之后都将 BackColor 打印为 Control。因此,我将把背景颜色更改为相同的颜色值。 - Joan Venge
是的,但在您更改之前,自定义渲染使用略有不同的颜色 - 或者至少看起来是这样 - 您可以看到两者外观上的明显差异。但就您所做的事情而言,我认为设置自己选择的纯色不会成为问题 - 只有当容器有一些溢出时才需要这样做。(根据大小调整,您可能根本看不到背景颜色!) - Dracorat
实际上我已经尝试过手动设置实际值,但是并没有起作用。控件被设置为240, 240, 240,但是这样做没有任何效果。我猜测它意识到已经有一个使用这些值定义的颜色,所以会使用那个颜色。我将其设置为245, 245, 245,然后它就可以工作了。 - Joan Venge

3

我认为你最好的选择是在属性中将RenderMode设置为System,并将布局属性保留为HorizontalStackWithOverflow。但是如果你不介意改变工具提示绘制样式的话。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接