通行证: 用户 密码
http://www.pconline.cn/
汽车网 | 游戏网 | 时尚女性
分站:北京 上海 广州 深圳 香港
广西 重庆 山东 江苏 辽宁 福建
首 页 | 今日报价 | 产业资讯 | 数码世界 | 硬件资讯 | 软件资讯 | 下 载 | 游 戏 |
论 坛 | 产 品 库 | 渠道商情 | 招聘培训 | 二    手 | 评 测 室 | 导 购 | 社 区 |
摄影
部落
手 机
数码相机
随身听
 DIY配件
笔记本
 台式机
摄像机
精品廊
-
您现在的位置: 软件资讯 > 开发特区 > .net技术 > C# 免费新闻代码RSS新闻聚合
  用C#实现office2003风格的菜单组件 出处:CP
[ 2005-08-24 09:49:05 ] 作者:cp(阿才翻译) 责任编辑:moningfeng

menuItem_MeasureItem事件处理方法定义如下:

private void menuItem_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
{
先取得要进行消息处理的MenuItem对象(MenuItem item = (MenuItem) sender;)。
if (item为seperator ) { e.ItemHeight = 7;}
else {
获取item的文字宽度,如果有快捷键,还要获取item中的快捷键所占用的宽度。
设置item的边界:e.ItemHeight = 文字高度+7; e.ItemWidth = 文字宽度 + 快捷键的宽度 + 图标宽度*2;
}
}


  menuItem_DrawItem的实现如下:

private void menuItem_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
MenuItemDrawing.DrawMenuItem(e, (MenuItem) sender);
}


  该函数只是简单地调用了类MenuItemDrawing中的静态方法DrawMenuItem。
  Start中为主菜单的子菜单添加事件处理的mainMenuItem_MeasureItem和mainMenuItem_DrawItem的定义如下:

private void mainMenuItem_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
{
MenuItem mi = (MenuItem) sender;//获得菜单项对象
SizeF miSize = e.Graphics.MeasureString(mi.Text, Globals.menuFont);
//由于顶级菜单(如文件菜单)无快捷键和图标,所以绘制的宽度为文字的宽度。
e.ItemWidth = Convert.ToInt32(miSize.Width);
}

private void mainMenuItem_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
MainMenuItemDrawing.DrawMenuItem(e, (MenuItem) sender);
}


  该方法只是调用了类MainMenuItemDrawing中的静态方法DrawMenuItem进行菜单绘制。
  其它方法如AddPicture和GetItemPicture的定义如下:

public void AddPicture(MenuItem mi, int index)
{
//将菜单项的句柄转化为字符串与图标的索引一一对应添加到picDetails集合中。
picDetails.Add(mi.Handle.ToString(), index.ToString());
}
public static Bitmap GetItemPicture(MenuItem mi)
{
if ( _imageList == null )
return null;
//将菜单项的句柄作为键查找该键对应的值,返回值为图标索引
string [] picIndex = picDetails.GetValues(mi.Handle.ToString());
if ( picIndex == null )
return null;
else
//根据索引取出位图对象并返回
return (Bitmap)_imageList.Images[Convert.ToInt32(picIndex[0])];
}



Flash剧场全新改版,精品Flash让你看够玩够!


[上一页] [1] [2] [3] [4] [下一页]

更多相关搜索: C#.. office2003..
正在加载评论,请稍候…

发给好友 我要报错 投稿给我们 加入收藏 返回顶部

本栏今日更新
相关文章
·Google的新IM工具即将要面世?
·侧边栏的威力:Google桌面搜索2.0发布
·Flash杀手!微软Sparkle即将露面
·微软杀毒OneCare Beta1多图欣赏
·上兵伐谋:探讨Windows神奇的组策略
·用过没?Win2003系统25招加速大法
·XP时代从硬盘启动到DOS的方法
·Flash 8 新特性之线条属性的改变
·用Asp.net制作顶部导航控件
·C#的office操作[word&Excel]
·C#+Oracle开发中执行存储过程问题
·c#多线程教学(5):Case 学习多线程
·c#多线程教学(4):线程池和异步编程
·c#.net多线程编程教学(3):线程同步
·C# 最强大的功能--泛型简介
·用C#屏敝3721网络实名

完美时尚娱乐:2004年腾讯QQ评测大观
精彩无限:MSN Shell4使用指南
亲手制作鲜花情人贺卡送给她
挑战伏明霞?企鹅跳水游戏,看你能得多少分?

新闻搜索
高级搜索
-
热点专题
·挑战十大Flash智益游戏
·QQ辅助软件使用指南
·向"流氓软件"大声说不!
·惜别!毕业十大必唱歌曲
·常用软件的另类用法集
·搜索技巧:网罗天下的乐趣
·电脑艺术设计大师之路连载
·老歌歪唱Flash MV爆笑欣赏
更多...
Flash排行榜
·头文字D插曲-一路向北
·暴笑恶搞MV-《从良》
·笑谈广东话-叽叽噶噶
·恶搞!PP鸡打劫记之一
·下辈子如果我还记得你
·疯狂射击游戏-火凤凰号
·悲怆!披着羊皮的狼
·搞笑MV-亲爱的对不起
更多...
IT培训热门文章
· 月薪5万,微软最新面试题
· 微软召开黑客大会(图)
· 美军超级黑客特种部队揭密
· Linux下软件安装详解(图)
· 软考模拟软件(网络工程师)
· 2005年软件水平考试资料
· 世界编程大赛第1名写的程序
· 某变态公司的面试IQ题
更多...
PConline频道精选