测试可用的代码:

#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. Atitit.实现继承的原理and方法java javascript .net c# php ...

    Atitit.实现继承的原理and方法java javascript .net c# php ... 1. 实现继承的问题 1 2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象 1 ...

  2. atitit...触发器机制 ltrigger mechanism sumup .的总结O8f

    atitit...触发器机制  ltrigger  mechanism sumup .的总结O8f 1. 触发器的类型 1 2. 实现原理 1 3. After触发器 Vs Instead Of触发器 ...

  3. 详解Bootstrap面板组件

    面板组件主要作用是用来处理一些其他组件无法完成的功能,在不同的版本中具有不同的源码: LESS:panels.less SASS:_panels.scss 基础面板非常简单,就是一个div容器中运用了 ...

  4. 关于TCP的粘包

    2014年与宗宗一起去厦门测试软件接口的时候,与上级系统基于TCP方式通讯,数据量大时,经常通讯失败,检查日志发现是上级系统应该多次返回的数据一次性接收到了. 上网搜索了一下,才了解到TCP粘包的问题 ...

  5. FindFriendsServer服务搭建

    本文介绍如何搭建FindFriendsServer(https://github.com/hnrainll/FindFriendsServer)所需的环境. 环境需要: Windows+Apache+ ...

  6. 關於imagick不得不說的一些事

    PHP建圖通常都用GD庫,因為是內置的不需要在服務器上額外安裝插件,所以用起來比較省心,但是如果你的程序主要的功能就是處理圖像,那麼就不建議用GD了,因為GD不但低效能而且能力也比較弱,佔用的系統資源 ...

  7. cocos2d-x在Android平台下的音频导致的卡死

      先挖个坑,慢慢再来填.出错信息: frameworks/wilhelm/src/android/AudioPlayer_to_android.cpp:779: pthread 0x75f14a00 ...

  8. SCN试验之一

    在数据库运行的时候,数据库系统的SCN不断地增长: SQL> select dbms_flashback.get_system_change_number from dual; GET_SYST ...

  9. 【转】使用Cocoapods创建私有podspec

    Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...

  10. css3动画特效:纯css3制作win8加载动画特效

    Windows 8     完整效果如上图:这个里面可能是css冲突,喜欢的可以自己去体征一下:   css特效代码: <style type="text/css"> ...