给Winform添加右键菜单
最近用到DotNetBar的SuperTabControl,发现SuperTabItem木有右键菜单,也不是继承于Control的,ContextMenu属性就没法设置了,只好自己手动加了,不多废话,直接上代码吧。
using System; using System.Drawing; using System.Windows.Forms; using DevComponents.DotNetBar; namespace DevComponents.DotNetBar { //继承SuperTabItem public class SuperTabItemDev : SuperTabItem { //定义委托 public delegate void MenuItemClickHandler( object sender, ToolStripItemClickedEventArgs toolStripItemClickedEventArgs); //定义对应事件 public event MenuItemClickHandler myMenuItemClick; //是否启用上下文菜单 private bool _IsShowContextMenu = false; public bool IsShowContextMenu { get { return _IsShowContextMenu; } set { _IsShowContextMenu = value; if (value) { //设置右键事件,显示上下文菜单 this.MouseUp += SuperTabItemDev_MouseUp; _Menu = this.ContextMenuStrip; //设置点击菜单选项后的事件绑定 _Menu.ItemClicked += MenuOnItemClicked; } else { //移除绑定信息 this.MouseUp -= SuperTabItemDev_MouseUp; _Menu.ItemClicked -= MenuOnItemClicked; _Menu = null; } } } //上下文菜单的 Getter/Setter public ContextMenuStrip _Menu; public ContextMenuStrip ContextMenuStrip { get { //默认Get的时候就创建了,也可以外围Set添加 if (_Menu == null) { _Menu = new ContextMenuStrip(); ToolStripMenuItem UpdateNameToolStripMenuItem = new ToolStripMenuItem(); UpdateNameToolStripMenuItem.Name = "UpdateNameToolStripMenuItem"; UpdateNameToolStripMenuItem.Size = new System.Drawing.Size(124, 22); UpdateNameToolStripMenuItem.Text = "修改名称"; _Menu.Items.AddRange(new ToolStripItem[] { UpdateNameToolStripMenuItem}); _Menu.Name = "contextMenuStrip1"; _Menu.Size = new System.Drawing.Size(125, 26); } return _Menu; } set { _Menu = value; } } //右键设置显示上下文菜单 void SuperTabItemDev_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { //这个显示的位置,根据实现的情况,使用PointToScreeen,我这里是使用的Y车轴是不变的 this.ContextMenuStrip.Show(new Point(e.X, e.Y+70)); } } //点击菜单项后,分发事件出去 private void MenuOnItemClicked(object sender, ToolStripItemClickedEventArgs toolStripItemClickedEventArgs) { this.ContextMenuStrip.Hide(); if (myMenuItemClick != null) { myMenuItemClick(sender, toolStripItemClickedEventArgs); } //MessageBox.Show("You had selected 修改!"); } } }
//代码调用 SuperTabItemDev item = new SuperTabItemDev(); item.IsShowContextMenu = true; item.myMenuItemClick += item_myMenuItemClick; private void item_myMenuItemClick(object sender, ToolStripItemClickedEventArgs toolStripItemClickedEventArgs) { MessageBox.Show("你已经点击 --> 修改!"); }
虽然很简单的东西,不过可以一起分享与学习也不错~