Yesky首页| 产品报价| 行情| 手机 | 数码 | 笔记本 | 台式机 | DIY硬件 | 外设 | 网络 | 数字家庭 | 评测 | 软件 | e时代 | 游戏 | 图片 | 壁纸 | 群乐 | 社区 | 博客 | 下载
软件频道>程序开发>JavaVBVCDelphiC/C++Web开发微软专栏移动数据库程序人生软件工程|产品中心下载什么是软件架构
您现在的位置: 天极网 > 开发频道 > 讲解:自己做出VB.NET风格的右键菜单
全文
群乐:VB.NET

讲解:自己做出VB.NET风格的右键菜单

2007-04-23 07:00 作者: 出处: 论坛整理 责任编辑:卢林嘉

  自己做出VB.NET风格的右键菜单(简单,实用)

  此主题相关图片如下:class MyMenuItem : System.Windows.Forms.MenuItem

以下是引用片段:

public MyMenuItem() 

//这里很重要,必须把OwerDraw设为true,这样可以自己画菜单,否则便是让操作系统画菜单了,默认的是false 
this.OwnerDraw=true; 

protected override void OnDrawItem(SysDrawItemEventArgs e) 

//要重画菜单,是没有OnPaint方法重载的,只有重载OnDrawItem方法! 
Graphics g=e.Graphics; 
g.SmoothingMode=SmoothingMode.AntiAlias;//抗锯齿 
Font f = new Font(FontFamily.GenericSerif, 12, FontStyle.Regular, GraphicsUnit.Pixel);//设定菜单的字体 
Pen p=new Pen(Color.Navy,1);//这是画边框的字体 
if(e.State==DrawItemState.NoAccelerator)//一开始右键单击出现菜单,但是鼠标并没有移上去 
{ //用白色的底色 
g.FillRectangle(Brushes.WhiteSmoke,e.Bounds.X-2,e.Bounds.Y-2,121,23); 

//鼠标移上去,但是并没有单击 
if ((e.State &DrawItemState.Selected)==DrawItemState.Selected) 

//花边框和底色 
g.FillRectangle(Brushes.LightSteelBlue,e.Bounds.X,e.Bounds.Y,109,20); 
g.DrawLine(p,e.Bounds.X,e.Bounds.Y,e.Bounds.X,e.Bounds.Y+19); 
g.DrawLine(p,e.Bounds.X,e.Bounds.Y+19,e.Bounds.X+109,e.Bounds.Y+19); 
g.DrawLine(p,e.Bounds.X+109,e.Bounds.Y+19,e.Bounds.X+109,e.Bounds.Y); 
g.DrawLine(p,e.Bounds.X+109,e.Bounds.Y,e.Bounds.X,e.Bounds.Y); 

//显示文字 
g.DrawString(this.Text,f,Brushes.Black,e.Bounds.X,e.Bounds.Y); 
g.Dispose(); 

//这是很重要的,这给你的菜单定义了大小,高20,宽100,否则你的菜单什么也看不到 
protected override void OnMeasureItem(MeasureItemEventArgs e) 

e.ItemHeight=20; 
e.ItemWidth=100; 

  说明:这里我没有画按钮按下时的样子(懒:),主要是以后进一步改进),当然也没有画图标,也是为了以后改进,这只是一个初步的形态,大家看看有什么更高的方法?!


  阅读关于 VB .NET 边框 菜单 字体 操作系统 按钮 的全部文章
网友关注
最新上市
编辑推荐
欢迎订阅天极网RSS聚合资讯:http://www.yesky.com/index.xml