zoukankan      html  css  js  c++  java
  • C# 自定义样式实现菜单和工具栏的分割线

    在做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的样式!效果如下:

                    

  • 相关阅读:
    Dynamics AX 2012 R3 Demo 安装与配置
    [转]SQL SERVER 2008 登陆失败(SQL和windows都没有对应的权限)
    [转]vs2008安装失败的总结与分享
    Dynamics AX 2012 R2 在报表上显示和打印条码
    WinCE Show App Icon
    [转]clrDateTime to Dynamics AX TransDate
    WINCE 隐藏标题栏
    HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Negotiate,NTLM”
    4.销售和分发
    MEANIO
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/3572014.html
Copyright © 2011-2022 走看看