在做WinForm界面布局时,菜单和工具栏必不可少!但是MenuStrip和ToolStrip不能够对边框的样式直接设置,如果想实现菜单和工具栏之间的分割线就不容易实现;今天查阅了一下msdn找到了一个方法,和大家一块分享,如果有更好的办法的话可以贴出来,共同进步;

  首先,创建一个CustomProfessionalRenderer类(类名可随便定义)继承自ToolStripProfessionalRenderer。代码如下:

    /// <summary>
    
/// 自定义菜单工具栏样式
    
/// </summary>
    class CustomProfessionalRenderer : ToolStripProfessionalRenderer
    {
        
//重载ToolStripProfessionalRenderer类的OnRenderToolStripBorder方法
        protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
        {
            
base.OnRenderToolStripBorder(e);
            ControlPaint.DrawBorder(
                e.Graphics,
                e.AffectedBounds,
                SystemColors.ControlDarkDark, 
0, ButtonBorderStyle.None, SystemColors.Control, 1, ButtonBorderStyle.Inset, SystemColors.ControlDarkDark, 0, ButtonBorderStyle.None, SystemColors.ControlDark, 0, ButtonBorderStyle.None);
        }
    }

 

 

然后,通过设置MenuStrip或ToolStrip的Renderer属性就ok了。代码如下:

 

 

        private void Form1_Load(object sender, EventArgs e)
        {
            
this.toolStrip1.Renderer = new CustomProfessionalRenderer();  //设置自定义样式
        }

 

最后,需要注意的是如果设置MenuStrip的边框的话,效果不是很好,因为子菜单的边框和控件的主边框都会使用该样式绘制;这样会造成重复,因此建议设置ToolStrip的样式!效果如下:

                 C# 自定义样式实现菜单和工具栏的分割线!!

大功告成!呵呵!

相关文章:

  • 2022-12-23
  • 2021-04-06
  • 2021-12-15
  • 2021-06-18
  • 2022-12-23
  • 2021-04-18
  • 2021-05-10
猜你喜欢
  • 2021-11-02
  • 2022-12-23
  • 2022-02-14
  • 2021-04-25
  • 2021-09-08
  • 2022-01-05
相关资源
相似解决方案