栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#实现Menu和ContextMenu自定义风格及contextMenu自定义

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#实现Menu和ContextMenu自定义风格及contextMenu自定义

为了实现自定义的Menu和ContextMenu效果,下面演示代码通过派生ProfessionalColorTable类,在自定义的类中重写ProfessionalColorTable类的相关联的属性,从而实现自定义菜单效果。

using System.Drawing;
using System.Windows.Forms;
public class CustomToolStripColorTable : ProfessionalColorTable
{
  /// 
  /// 主菜单项被点击后,展开的下拉菜单面板的边框
  /// 
  public override Color MenuBorder
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  /// 
  /// 鼠标移动到菜单项(主菜单及下拉菜单)时,下拉菜单项的边框
  /// 
  public override Color MenuItemBorder
  {
    get
    {
      return Color.Transparent;
    }
  }
  #region 顶级菜单被选中背景颜色
  public override Color MenuItemSelectedGradientBegin
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  public override Color MenuItemSelectedGradientEnd
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  #endregion
  #region 顶级菜单被按下是,菜单项背景色
  public override Color MenuItemPressedGradientBegin
  {
    get
    {
      return Color.Black;
    }
  }
  public override Color MenuItemPressedGradientMiddle
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  public override Color MenuItemPressedGradientEnd
  {
    get
    {
      return Color.Black;
    }
  }
  #endregion
  /// 
  /// 菜单项被选中时的颜色
  /// 
  public override Color MenuItemSelected
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  #region 下拉菜单面板背景设置(不包括下拉菜单项)
  //下拉菜单面板背景一共分为2个部分,左边为图像区域,右侧为文本区域,需要分别设置
  //ToolStripDropDownBackground设置文本部分的背景色
  public override Color ToolStripDropDownBackground
  {
    get
    {
      return Color.Black;
    }
  }
  //以ImageMarginGradient开头的3个设置的是图像部分的背景色,begin->end是从左到右的顺序
  public override Color ImageMarginGradientBegin
  {
    get
    {
      return Color.Black;
    }
  }
  public override Color ImageMarginGradientMiddle
  {
    get
    {
      return Color.Black;
    }
  }
  public override Color ImageMarginGradientEnd
  {
    get
    {
      return Color.Black;
    }
  }
  #endregion
}

然后对需要实现自定义风格的菜单(如:contextMenuStrip1)应用如下代码:

contextMenuStrip1.RenderMode = ToolStripRenderMode.Professional;
contextMenuStrip1.Renderer = new ToolStripProfessionalRenderer(new CustomToolStripColorTable());

ContextMenu的自定义

1.针对整个ContextMenu, 自定义一个Style,去掉竖分割线


 
 
 
 
   
     

  
    
      
      
 
   
     

     
   
 
      
    
  
  
    
      
    
  

     
   
 
      

2. 针对其中的ItemContainerStyle来写个MenuItem的control template

                 
3. contextMenu使用上述style
 

以上就是本文通过C#实现Menu和ContextMenu自定义风格及contextMenu自定义的全部内容,希望大家喜欢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/124863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号