How to remove this strange visual artifact in the corner of ToolStrip Winforms control?

前端 未结 3 1672
礼貌的吻别
礼貌的吻别 2021-02-07 10:53

Here is the picture that shows the problem. Take a look at the bottom right corner.

Anyone knows how to get rid of it?

Setting LayoutStyle to

相关标签:
3条回答
  • 2021-02-07 10:56

    Sorry for being late to the party, but the accepted answer didn't work for my needs. The following solution is what I came up with:

    Getting rid of the black line

    1) Create a custom renderer:

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

    2) Use the custom renderer:

    toolStrip1.Renderer = new CustomToolStripProfessionalRenderer();
    

    Getting rid of the background

    The above solution satisfies the need of the original question, but I didn't like the gradient background on the ToolStrip either. I wanted the ToolStrip to be an "invisible" container:

    1) Create a custom color table:

    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) Use the custom color table:

    class CustomToolStripProfessionalRenderer : ToolStripProfessionalRenderer
    {
        public CustomToolStripProfessionalRenderer()
            : base(new CustomProfessionalColorTable())
        {
    
        }
    
        protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
        {
            // Don't draw a border
        }
    }
    
    0 讨论(0)
  • 2021-02-07 11:01

    In the properties bar, set "RenderMode" to "System" or use

    .RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
    

    Doing this will change the .BackColor to "Control" but you can change that after if you want.

    0 讨论(0)
  • 2021-02-07 11:07

    I think your best shot would be to set the RenderMode to System in the properties and leave the layout properties to HorizontalStackWithOverflow. But that is if you don't mind changing the tooltip paint style.

    0 讨论(0)
提交回复
热议问题