要在一个菜单项中添加图标,您可以重载该MenuItem的DrawItem事件,在该事件中重绘该MenuItem。
在MSDN中有一个关于DrawItem的示例:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsmenuitemclassdrawitemtopic.asp在一个菜单项中添加图标的主要步骤如下:
1. 设置该MenuItem的OwnerDraw属性为true。
2. 重载该MenuItem的MeasureItem事件,在其中设置该MenuItem的大小,如下例所示:
private void menuItem3_MeasureItem(object sender,MeasureItemEventArgs e)
{
e.ItemHeight = 40;
e.ItemWidth = 100;
}
3. 重载该MenuItem的DrawItem事件,在其中重绘该MenuItem。如添加一个图标可参考下例:
private void menuItem3_DrawItem(object sender, DrawItemEventArgs e)
{
Image Image1 = new Bitmap("..\\..\\bitmap1.bmp");
e.Graphics.DrawImage(Image1,new Rectangle(e.Bounds.X, e.Bounds.Y, Image1.Height, Image1.Width));
}

解决方案 »

  1.   

    To:hbxtx(xy) 麻烦你看清楚我的问题再回答,好吗?
      

  2.   

    You should change the property 'OwnerDraw'of your menuItemExit to 'true',try it.
      

  3.   

    You should change the property 'OwnerDraw' of your menuItemExit to 'true'
      

  4.   

    You should change the property 'OwnerDraw' of your menuItemExit to 'true'
      

  5.   

    To:mubaosen(小楼一夜听春雨) 我已经将OwnerDraw这个属性设为true了为了测试是否执行了菜单重画事件,我在menuItemExit_DrawItem事件里加入一句MessageBox.Show("adfasd");结果没有弹出对话框,所以应该是没有执行到菜单重画事件,所以我想问到底菜单重画事件的代码应该写在何处才能执行到?
      

  6.   

    TO:dayn9() 我确实没加。
    能告诉怎样写吗?那个事件委托,就是"+="的代码?
      

  7.   

    To:dayn9() 我自己研究了一下,将事件委托加了,可以执行了,但有一个很大的问题。如果运行程序后,直接点击重画菜单所在的一级菜单则弹出错误:内存不足!但如果先点击其它的菜单,再点击重画菜单所在的一级菜单则重画正常。
    但重画正常所付出的代价是其它菜单都在点击一级菜单后不弹出,当鼠标经过菜单所在位置才能看见菜单,其它的程序也是一样情况,连"我的电脑"里的快捷菜单都出现这种情况。将程序关闭后还是一样,甚至注销WINDOW都还是一样,非要重启后才正常。
      

  8.   

    http://www.codeproject.com/cs/miscctrl/vsnetmenu.asp
    用这个类库!
    可以做出类例VS.NET的菜单.
      

  9.   

    TO:henryfan1(henry) 
    谢谢,研究一下TO: gordenfl(可爱) 
    我也不知道为什么会出现内存不足,我的内存是192M的,而且当时我只打开C#,其它应用程序都没打开。