测试可用的代码:

#region   右键快捷菜单单击事件
private void contextMenuStrip1_ItemClick(object sender, EventArgs e)
{
ToolStripItem item = (ToolStripItem)sender;
Clipboard.SetText(item.Text); //把要插入的文本放到剪切板
SendKeys.Send("^v"); // 模拟ctrl+v
}
#endregion //写右键快捷菜单控件
for (int i = 0; i < DataClass.ClassCustomParameter.intRowCountCustomParmeter; i++)
{
ToolStripMenuItem menuitem;
menuitem = new ToolStripMenuItem();
menuitem.Text = DataClass.ClassCustomParameter.strCustomParameter[i, 0];
menuitem.Name = "tllStripMenu" + i;
menuitem.Click += new EventHandler(contextMenuStrip1_ItemClick);
contextMenuStrip1.Items.Add(menuitem);
}
//各控件绑定右键快捷菜单
textBoxCaseReason.ContextMenuStrip = contextMenuStrip1;

  

【转】ContextMenuStrip菜单应用

ContextMenuStrip 控件提供了与某个控件关联的快捷菜单。也就是说通过这个控件可以方便的实现在别的控件上弹出右键快捷菜单。

例子:

1、先添加一个ContextMenuStrip 控件到Form上 
2、设置目标控件(如窗体、文本框等)的ContextMenuStrip属性,指向你刚才添加的ContextMenuStrip 控件。这样就实现了两者的关联。 
3、动态将一些菜单项添加到 ContextMenuStrip 控件中,如: 
//上下文菜单项 
ContextMenuStrip1.Items.Add(msEditNew); 
ContextMenuStrip1.Items.Add(msEditBar1); 
ContextMenuStrip1.Items.Add(msEditCut); 
ContextMenuStrip1.Items.Add(msEditPaste); 
ContextMenuStrip1.Items.Add(msEditDelete); 
ContextMenuStrip1.Items.Add(msEditBar2);

这样就OK了,你在目标控件上按右键时将弹出快捷菜单。

 
 
 

动态添加ContextMenuStrip项(ToolStripItem)

        //绑定菜单
private void BindMenu(DataTable dt)
{
foreach (DataRow row in dt.Rows)
{
ToolStripItem item = new ToolStripMenuItem();
item.Name = row[0].ToString();
item.Text = row[1].ToString();
item.Click += new EventHandler(contextMenuStrip1_ItemClick);
contextMenuStrip1.Items.Add(item);
//contextMenuStrip1.Items.Add(row[1].ToString(), null, contextMenuStrip1_ItemClick);
}
} private void contextMenuStrip1_ItemClick(object sender, EventArgs e)
{
ToolStripItem item = (ToolStripItem)sender;
MessageBox.Show(item.Name);
}
 
 
 
 
 

动态生成ContextMenuStrip

 

数据表:

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace WindowsFormsApplication25
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} /// <summary>
/// 窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
ToolStripMenuItem tmpItem = new ToolStripMenuItem("移动到");
this.contextMenuStrip1.Items.Add(tmpItem); CreateContextMenuStrip(tmpItem.DropDownItems, GetTable(), 1);
} /// <summary>
/// ContextMenuStrip中DropDownItem单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void MenuClicked(object sender, EventArgs e)
{
MessageBox.Show((sender as ToolStripMenuItem).Text);
} /// <summary>
/// 递归生成ContextMenuStrip
/// </summary>
/// <param name="items"></param>
/// <param name="dt"></param>
/// <param name="parentId"></param>
public void CreateContextMenuStrip(ToolStripItemCollection items, DataTable dt, int parentId)
{
if (dt.Rows.Count == 0)
return;
string fliter = string.Format("ParentGroup={0}", parentId);
DataRow[] dr = dt.Select(fliter);
foreach (DataRow row in dr)
{
ToolStripMenuItem menuitem;
menuitem = new ToolStripMenuItem();
menuitem.Text = row["GroupName"].ToString();
menuitem.Name = row["ID"].ToString();
menuitem.Click += new EventHandler(MenuClicked);
items.Add(menuitem);
CreateContextMenuStrip(menuitem.DropDownItems, dt, Convert.ToInt32(row["ID"]));
dt.Rows.Remove(row);
}
} /// <summary>
/// 获取数据源
/// </summary>
/// <returns></returns>
DataTable GetTable()
{
SqlDataAdapter da = new SqlDataAdapter("select * from ReportGroup", "server=(local);uid=sa;pwd=123;database=ExcelMaster;");
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
} }
}

结果:

【转】ContextMenuStrip菜单应用的更多相关文章

  1. C#文本选中及ContextMenuStrip菜单使用

    '文本框选中显示'TextBox1.SelectAll()选择所有文本'textBox1.Text.Insert(start,strInsertText)指定位置添加文本1 Private Sub T ...

  2. WinForm 菜单控件

    一:MenuStrip 菜单条 MenuStrip 是应用程序菜单条的容器. 二:ToolStripMenuItem 像上面图中, 文件 格式 等这些菜单当中的一级菜单以及文件中的 新建 打开 分割条 ...

  3. C# WinForm 技巧八:界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar” 使用

    概述      最近几天一直在关注WinFrom方面的文章主要还是园子里伍华聪的博客,在看看我们自己写的项目差不忍赌啊,有想着提炼一下项目的公共部分,公共部分有分为 界面,类库两方面,今天主要是把界面 ...

  4. C# WinForm 技巧八:界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar” 使用

    概述 转自 http://www.cnblogs.com/luomingui/archive/2013/09/19/3329763.html 最近几天一直在关注WinFrom方面的文章 有想着提炼一下 ...

  5. WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二)

    WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二) 编写人:CC阿爸 2015-1-29 今天我想与大家继续一起分享这一伟大的控件.有兴趣的同 ...

  6. WeifenLuo.WinFormsUI.Docking"的使用 z

    在伍华聪的博客中,看到布局控件"WeifenLuo.WinFormsUI.Docking",发现的确是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件. ...

  7. Dev XtraTreeList 学习

    本文转载:http://www.cnblogs.com/VincentLuo/archive/2012/01/06/2313983.html 一.设置载请保留地址http://www.cnblogs. ...

  8. 【C#】ContextMenuStrip 右键菜单颜色设置

    有些时候自己想要修改ContexMenuStrip右键菜单的一些背景色之类的,该如何实现呢? 首先: ContextMenuStrip _context = new ContextMenuStrip( ...

  9. Winform菜单之ContextMenuStrip

    ContextMenuStrip实际就是上下文菜单,就是右键单击某个窗体或者控件后出来的菜单. 从工具栏里拖一个出来放在窗口上就行 然后进行一系列的设置,设置方法跟前面的MenuStrip基本是一样的 ...

随机推荐

  1. js实现点击一个按钮进行两种状态的切换(toggle)

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  2. muduo库的简单使用-echo服务的编写

    muduo库的简单使用 muduo是一个基于事件驱动的非阻塞网络库,采用C++和Boost库编写. 它的使用方法很简单,参考这篇文章:TCP网络编程本质论 里面有这么几句: 我认为,TCP 网络编程最 ...

  3. 详解Bootstrap媒体对象

    在web页面中,图片居左,内容居右排列,是非常常见的效果,它也就是媒体对象,它是一种抽象的样式,可以用来构建不同类型的组件,在bootstrap框架中其对应的版本文件如下: LESS: media.l ...

  4. js系列(9)js的运用(一)

        本节开始介绍javascript在html页面中的运用.     (1)link样式表的动态绑定:(http://files.cnblogs.com/files/MenAngel/text04 ...

  5. Diameter消息应用层路由

    1. 创建和发送Request消息: 1) 产生一个Request消息时,必须遵守下列规则: · 设置头部的Command code: · 设置头部的 'R' 位: · 设置头部的End-to-End ...

  6. [Aaronyang] 写给自己的WPF4.5 笔记24 [与winform交互-flash-DEMO-收尾篇1/6]

      =====潇洒的版权线======www.ayjs.net===== Aaronyang ===== AY ====== 安徽 六安 杨洋 ======   未经允许不许转载 ====== 1.新 ...

  7. java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting

    将原有项目图片加载框架picasso改为glide,关于picasso和glide文档就自行查阅相关资料 显示 图片 例子 Glide.with(mContext).load(imageUrl).pl ...

  8. EF中一对多的关系中,用单字段保存ID拼接字符串

    model.SubjectTerms = model.SelectedSubjectTerm.Trim(',').Split(',').ToList().Select(x => new Subj ...

  9. 美行Thinkpad八通道快捷入口

    美行Thinkpad八通道快捷入口 链接: http://shop.lenovo.com/perksoffer/us/en/laptops/thinkpad/?__followRobots=true打 ...

  10. Git忽略配置文件gitignore

    在git客户端用户工程根目录下,.git同级目录创建文件.gitignore,文件名为.gitignore.目的是为了忽略一些不需要提交的文件到git服务器 配置如下: bin target .set ...