DataGridView使用技巧九:DataGridView的右键菜单(ContextMenuStrip)

DataGridView,DataGridViewColumn,DataGridViewRow,DataGridViewCell有ContextMenuStrip属性。可以通过设置ContextMenuStrip对象来控制DataGridView的右键菜单的显示。

DataGridViewColumn的ContextMenuStrip属性设定除了列头以外的单元格的右键菜单。

DataGridViewRow的ContextMenuStrip属性设定除了行头以外的单元格的右键菜单。

DataGridViewCell的ContextMenuStrip属性设定指定单元格的右键菜单。

对于单元格上的右键菜单的设定,优先顺序是:Cell>Row>Column>DataGridView

利用CellContextMenuStripNeeded、RowContextMenuStripNeeded事件可以设定单元格的右键菜单,尤其是需要右键菜单根据单元格值的变化而变化的时候。比起使用循环遍历,使用该事件来设定右键菜单的效率更高。

说明:CellContextMenuStripNeeded事件处理方法的参数中,e.RowIndex=-1表示列头,e.ColumnIndex=-1表示行头。RowContextMenuStripNeeded则不存在e.ColumnIndex=-1的情况。

示例一:

 1 //设置DataGridView的右键菜单
 2 this.dgv_Users.ContextMenuStrip = cmsDgv;
 3 //设置列的右键菜单
 4 this.dgv_Users.Columns[1].ContextMenuStrip = cmsColumn;
 5 //设置列头的右键菜单
 6 this.dgv_Users.Columns[1].HeaderCell.ContextMenuStrip = cmsHeaderCell;
 7 //设置行的右键菜单
 8 this.dgv_Users.Rows[2].ContextMenuStrip = cmsRow;
 9 //设置单元格的右键菜单
10 this.dgv_Users[1, 2].ContextMenuStrip = cmsCell;

示例二:

private void dgv_Users_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
{
    DataGridView dgv = sender as DataGridView;
    if (e.RowIndex < 0)
    {
         //设置列头右键
         e.ContextMenuStrip = cmsHeaderCell;
    }
    else if (e.ColumnIndex < 0)
    {
          //设置行头右键菜单
          e.ContextMenuStrip = cmsRow;
     }
     else if (dgv[e.ColumnIndex, e.RowIndex].Value.ToString().Equals("男"))
     {
           e.ContextMenuStrip = cmsCell;
     }
     else
     {
           e.ContextMenuStrip = cmsDgv;
     }
}
时间: 2024-08-18 03:43:45

DataGridView使用技巧九:DataGridView的右键菜单(ContextMenuStrip)的相关文章

C# 右键菜单 contextMenuStrip

1.添加contextMenuStrip控件 默认命名:contextMenuStrip1 2.在要显示的控件上,找到其ContextMenuStrip属性,并设置其为contextMenuStrip1 比如我这边放在 dataGridView1 控件上,就将dataGridView1的ContextMenuStrip属性,设置为contextMenuStrip1 3.将dataGridView1的CellMouseDown事件下写入下列代码 //在右键点击时,将当前行选中 private vo

[转]【C#】分享一个弹出浮动层,像右键菜单那样召即来挥则去

适用于:.net2.0+ Winform项目 背景: 有时候我们需要开一个简单的窗口来做一些事,例如输入一些东西.点选一个item之类的,可能像这样: 完了返回原窗体并获取刚刚的输入,这样做并没有什么问题,但在几天前我突然产生了一些想法:为什么非得有板有眼的弹出一个窗体给用户呢,是不是可以在按钮附近迅速呈现一个层来做这些事呢,类似快捷菜单那样,用户高兴就在里面做一下该做的事,不高兴就在其它地方点一下它就消失,本来很轻便快捷的操作,DUANG~弹出一个窗体来会不会令用户心里咯噔一下呢,感受层面的事

datagridview右键菜单

最近一直在弄DatagridView,前一篇文章弄了一复选框删除,但是后来想想,如果我每就删除一行,那么我每次删除的时候都得先选中,然后再区单机删除,太麻烦了,于是就想起来弄一个右键删除,然后又加了一个右键变色,反正就是一个右键菜单,下边吧代码给大家,很简单的代码,确是非常的实用. /// <summary> /// 添加一个表格 /// </summary> public void addDatatable() { DataColumn dc = new DataColumn(&

[WinForm]DataGridView列头右键菜单

[WinForm]DataGridView列头右键菜单 前言 继续"不误正业" - - #,记录一下.有时候有这样的需求:DataGridView的列头菜单可以选择具体显示哪些列,而数据区域的菜单显示增删改查,这样就需要设置两个菜单了,而DataGridView并没有为列头设置菜单的选项,这里分享一段代码. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 一.拖拽一个

DataGridView右键菜单自定义显示及隐藏列

WinForm程序中表单的列可自定义显示及隐藏,是一种常见的功能,对于用户体验来说是非常好的.笔者经过一段时间的摸索,终于实现了自己想要的功能及效果,现记录一下过程: 1.新建一个自定义控件,命名为:PopupMenuControl. 2.在PopupMenuControl.Designet文件中的InitializeComponent()方法下面,注册以下事件: this.Paint += new System.Windows.Forms.PaintEventHandler(this.Popu

【开发技巧系列】绿色程序添加到右键菜单

1.运行regedit命令打开注册表管理器2.找到右键项目注册表“HKEY_CLASSES_ROOT”旗下子菜单作用分别为:HKEY_CLASSES_ROOT\*\shell        对任意文件单机右键弹出的菜单的菜单项HKEY_CLASSES_ROOT\folder\shell        对一般文件夹和系统文件(文件夹和驱动器)的右键弹出菜单都起作用HKEY_CLASSES_ROOT\directory\shell    对一般文件夹(仅文件夹)右键点击菜单中弹出的部分内容HKEY_

DataGridView使用技巧十三:点击列头实现升序和降序排序

DataGridView 列有三种排序模式.每一列的排序模式是通过该列的 SortMode 属性指定的,该属性可以设置为以下的 DataGridViewColumnSortMode 枚举值之一. DataGridViewColumnSortMode 值说明: Automatic 文本框列的默认排序模式.除非将列标头用于选择,否则单击列标头将自动按此列对 DataGridView 排序,并显示一个指示排序顺序的标志符号(向上的三角箭头:升序排序:向下的三角箭头:降序排序). NotSortable

Windows右键菜单设置与应用技巧

http://blog.163.com/lee_honleon/blog/static/555251522008014258896/ 需要修改注册表,挺麻烦的.最好还是把迅雷卸了重装,不会影响什么,一会就好了. 如果你一定要改,我这有篇相关文章,给你作参考. 注意,改之前一定先给注册表做个备份,以免以外发生. 一.右键菜单大揭密 在Windows系统中,只要对着桌面或是文件(夹)单击右键,就会弹出一个快捷菜单,里面有对该文件(夹)的一些常用操作命令,通过右键菜单,可以方便用户对文件的某些操作.不

DataGridView使用技巧十一:DataGridView用户输入时,单元格输入值的设定

通过DataGridView.CellParsing事件可以设定用户输入的值.下面的示例:当输入英文文本内容的时候,立即被改变为大写.DataGridView.CellParsing在离开编辑的单元格之后会被触发. 示例: 1 private void dgv_Users_CellParsing(object sender, DataGridViewCellParsingEventArgs e) 2 { 3 DataGridView dgv = sender as DataGridView; 4