给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";
menustrip和toolstrip_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;
private void item_myMenuItemClick(object sender, ToolStripItemClickedEventArgs toolStripItemClickedEventArgs)        {
MessageBox.Show("你已经点击 --> 修改!");
}
虽然很简单的东西,不过可以⼀起分享与学习也不错~