给Winform添加右键菜单

  • 格式:pdf
  • 大小:55.47 KB
  • 文档页数:2

给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("你已经点击 --> 修改!");

}

虽然很简单的东西,不过可以⼀起分享与学习也不错~