VB.Net程序设计:动态添加右键菜单和子菜单

前端之家收集整理的这篇文章主要介绍了VB.Net程序设计:动态添加右键菜单和子菜单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

VB.Net程序设计:动态添加右键菜单和子菜单

具体分5步

1:定义一个ContextMenuStrip对象。

2:用withevents关键字声明一个ContextMenu对象Private WithEvents ContextMenu1 As System.Windows.Forms.ContextMenu。

3:对ContextMenu对象进行初始化。

4:将ContextMenu对象加入ContextMenu对象。

5:将ContextMenu对象与form对象绑定。

例子:‘添加三个右键菜单,并每个菜单添加两个子菜单,把右键菜单绑定到当前窗体

  1. Private cms As ContextMenuStrip = New ContextMenuStrip()
  2. Dim i As Integer
  3. For i = 1 To 3
  4. Dim tsm As ToolStripMenuItem = New ToolStripMenuItem(i.ToString())
  5. Dim j As Integer
  6. For j = 1 To 2
  7. Dim tsmz As ToolStripMenuItem = New ToolStripMenuItem(j.ToString())
  8. tsm.DropDown.Items.Add(tsmz)
  9. Next
  10. cms.Items.Add(tsm)
  11. Next
  12.  
  13. Me.ContextMenuStrip = cms

例子:http://bbs.csdn.net/topics/350192775

  1. Dim cm As New ContextMenu
  2. Dim m As New MenuItem("菜单项1")
  3. AddHandler m.Click,AddressOf MenuItemClicked
  4. cm.MenuItems.Add(m)
  5. Dim m2 As New MenuItem("菜单项2")
  6. AddHandler m2.Click,AddressOf MenuItemClicked
  7. cm.MenuItems.Add(m2)
  8. Me.ContextMenu = cm '设置窗体右键菜单
绑定事件:
  1. Public Sub MenuItemClicked(ByVal sender As Object,ByVal e As EventArgs)
  2. Dim m As MenuItem = DirectCast(sender,MenuItem)
  3. MessageBox.Show(m.Text)
  4. End Sub

读取菜单值:

建议把sender对象强制转换为菜单,你就可以任意访问该菜单对象的属性了。例如Text,例如Tag属性等。

DimmenuItemAsToolStripMenuItem=DirectCast(sender,ToolStripMenuItem)
DimtempAsString=menuItem.Text
Dim tag as object = menuItem.tag


'详细一点的:仅供参考!http://s.yanghao.org/program/viewdetail.php?i=51247

设置菜单的图标,是否合并,等。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8.  
  9. namespace ContextMenuStripDemo
  10. {
  11. public partial class Form1 : Form
  12. {
  13. public Form1()
  14. {
  15. InitializeComponent();
  16. }
  17. private void InitListBox()
  18. {//添加ListBox的项
  19. for (int i = 0; i < 11; i++)
  20. {
  21. this.listBox1.Items.Add(i);
  22. this.listBox2.Items.Add(i);
  23. }
  24. }
  25. private void InitContextMenuStrip()
  26. {
  27. ContextMenuStrip contextMenuStrip = new ContextMenuStrip();//构造一个ContextMenuStrip
  28. contextMenuStrip.AllowMerge = false;//设置不能跟其他菜单合并
  29. ImageList imagelist = new ImageList();//设置图像集合
  30. imagelist.Images.Add(new Icon("delete.ico"));
  31. contextMenuStrip.ImageList = imagelist;
  32. contextMenuStrip.ShowCheckMargin = false;
  33. contextMenuStrip.ShowImageMargin = true;//显示图标在左边
  34. contextMenuStrip.ShowItemToolTips = true;//显示工具提示
  35. contextMenuStrip.TextDirection = ToolStripTextDirection.Horizontal;//水平显示文本
  36. contextMenuStrip.opening += new CancelEventHandler(contextMenuStrip_opening);
  37. this.listBox1.ContextMenuStrip = contextMenuStrip;//绑定到ListBox1控件
  38. this.listBox2.ContextMenuStrip = contextMenuStrip;//绑定到ListBox2控件
  39. }
  40.  
  41. void contextMenuStrip_opening(object sender,CancelEventArgs e)
  42. {
  43. ContextMenuStrip contextMenuStrip = sender as ContextMenuStrip;
  44. if (contextMenuStrip != null)
  45. {//第一次点击右键时,如果没有菜单项就添加
  46. if (contextMenuStrip.Items.Count == 0)
  47. {
  48. ToolStripMenuItem itemDelete = new ToolStripMenuItem();
  49. itemDelete.Text = "删除";
  50. itemDelete.ImageIndex = 0;
  51. itemDelete.Click += new EventHandler(itemDelete_Click);
  52. contextMenuStrip.Items.Add(itemDelete);//增加菜单
  53. }
  54. }
  55. }
  56.  
  57. void itemDelete_Click(object sender,EventArgs e)
  58. {
  59. ToolStripMenuItem Menuitem = sender as ToolStripMenuItem;
  60. ContextMenuStrip contextMenuStrip = Menuitem.Owner as ContextMenuStrip;//获取菜单对象
  61. if (contextMenuStrip != null)
  62. {//通过SourceControl获取目标控件
  63. ListBox listBox = contextMenuStrip.SourceControl as ListBox;
  64. if (listBox != null && listBox.SelectedIndex>-1)
  65. {
  66. listBox.Items.RemoveAt(listBox.SelectedIndex);
  67. }
  68. }
  69. }
  70.  
  71. private void Form1_Load(object sender,EventArgs e)
  72. {
  73. InitContextMenuStrip();
  74. InitListBox();
  75. }
  76. }
  77. }

猜你在找的VB相关文章