首页 DataGridView中 右键 弹出 编辑修改等菜单

DataGridView中 右键 弹出 编辑修改等菜单

举报
开通vip

DataGridView中 右键 弹出 编辑修改等菜单在界面上放一个ContextMenuStrip1 设置DataGridView的 ContextMenuStrip属性为你添加的Menu, 添加MenuStrip的选项,在MenuStrip选项单击事件里写你需要的操作。 删除行就是dgViewCustom.Rows.Remove(drow); 添加:Data'GridView设为可编辑就可以了 方案一:用contextMenuStrip控件,添加编辑修改右键菜单,然后右键单击菜单弹出编辑修改窗体,把dataGridView的数据上传到窗体,在进行修改 方...

DataGridView中 右键 弹出 编辑修改等菜单
在界面上放一个ContextMenuStrip1 设置DataGridView的 ContextMenuStrip属性为你添加的Menu, 添加MenuStrip的选项,在MenuStrip选项单击事件里写你需要的操作。 删除行就是dgViewCustom.Rows.Remove(drow); 添加:Data'GridView设为可编辑就可以了 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 一:用contextMenuStrip控件,添加编辑修改右键菜单,然后右键单击菜单弹出编辑修改窗体,把dataGridView的数据上传到窗体,在进行修改 方案二:或者不用右键菜单,在dataGridView上直接修改数据也是可以的 详细分析: 在winfrom编程中我们经常使用 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 格控件DataGridView的行关联快捷菜单(也称为上下文弹出菜单)ContextMenuStrip,基本步骤如下: 在窗体上 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 ContextMenuStrip快捷菜单控件; 设置DataGridView.RowTemplate.ContextMenuStrip属性为指定的快捷菜单; 在菜单弹出前捕获关联事件DataGridView.RowContextMenuStripNeeded,获得当前行与快捷菜单,并做适当处理。 但是,使用其关联事件DataGridView.RowContextMenuStripNeeded有一个重要的前提:“RowContextMenuStripNeeded 事件仅在设置了DataGridView控件的DataSource属性或者该控件的VirtualMode属性为 true 时发生。”(参考MSDN:RowContextMenuStripNeeded 事件)。 此外,上述 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 还有一个不足之处:在非数据行的地方(如:表格列头或行头)不能使用RowTemplate.ContextMenuStrip快捷菜单,也捕获不到事件DataGridView.RowContextMenuStripNeeded事件。 事实上,DataGridView.ContextMenuStrip是控件本身的快捷菜单。本文介绍的定制DataGridView控件,就是直接应用其ContextMenuStrip属性,定制一个快捷菜单关联事件,实现RowTemplate.ContextMenuStrip类似功能。基本思路如下: 重写DataGridView.MouseDown(MouseEventArgs e)方法,捕获鼠标右击事件; 根据事件参数MouseEventArgs的鼠标位置,计算DataGridView当前位置的行号与列号; 定制关联事件ContextMenuStripMenu,在快捷菜单弹出前获取行号、列号与快捷菜单对象对象。 关键技术 捕获鼠标右击位置(坐标),根据该位置计算当前行号与列号,并引发自定义关联事件。如下代码是捕获鼠标右击事件(定制DataGridView控件中的代码): protected override void OnMouseDown(MouseEventArgs e)   {       base.OnMouseDown(e);       if (e.Button == MouseButtons.Right)       {           if (this.ContextMenuStrip != null && this.ContextMenuStripNeeded != null)           {               int rowIndex = this.GetRowIndexAt(e.Location); // 计算行号               int colIndex = this.GetColIndexAt(e.Location); // 计算列号               ContextMenuStripNeededEventArgs ee; // 事件参数               ee = new ContextMenuStripNeededEventArgs(this.ContextMenuStrip, rowIndex, colIndex);               this.OnContextMenuStripNeeded(ee); // 引发自定义事件,执行事件方法           }       }   } 只有在ContextMenuStrip属性对象非空,以及定制关联事件ContextMenuStripNeeded非空(即有事件注册者)时,才需要计算行列坐标,并由OnContextMenuStripNeeded引发调用事件处理方法。当前鼠标位置的行/列编号计算方法如下: private int GetColIndexAt(Point mouseLocation)   {       int colIndex = -1;       int colOffset = 0;       int gridWidth = 1;       int padding = 1;       if (this.RowHeadersVisible)       {           colOffset += this.RowHeadersWidth;           padding = 0;       }       if (colOffset + padding < mouseLocation.X) // 超过表列头的范围(不含顶头的边框)       {           int curCol = this.FirstDisplayedScrollingColumnIndex;           for (int k = 0; k <= this.DisplayedColumnCount(true); k++)           {               if (curCol >= this.Columns.Count)               {                   break;               }               if (this.Columns[curCol].Visible)               {                   colOffset += this.Columns[curCol].Width;               }               if (colOffset + padding + gridWidth > mouseLocation.X) // x为当前边框位置               {                   colIndex = curCol;                   break;               }               curCol++;           }       }       return colIndex;   }   private int GetRowIndexAt(Point mouseLocation)   {       int rowIndex = -1;       int rowOffset = 0;       int gridWidth = 1;       int padding = 1;       if (this.ColumnHeadersVisible)       {           rowOffset += this.ColumnHeadersHeight;           padding = 0;       }       if (rowOffset + padding < mouseLocation.Y) // 超过表列头的范围(不含顶头的边框)       {           int curRow = this.FirstDisplayedScrollingRowIndex;           for (int k = 0; k <= this.DisplayedRowCount(true); k++)           {               if (curRow >= this.Rows.Count)               {                   break;               }               if (this.Rows[curRow].Visible)               {                   rowOffset += this.Rows[curRow].Height;               }               if (rowOffset + padding + gridWidth > mouseLocation.Y) // y为当前边框位置               {                   rowIndex = curRow;                   break;               }               curRow++;           }       }       return rowIndex;   } 代码中,参数mouseLocation来自MouseEventArgs的Location属性,this.FirstDisplayedScrollingRowIndex表示当前显示的第一行的行号,this.DisplayedRowCount(true)获取显示的全部行数,参数true表示要包括最后部分显示的行。 按照惯例,-1表示当前鼠标位置位于所有行或列之外,如:表的列头、行头等地方。
本文档为【DataGridView中 右键 弹出 编辑修改等菜单】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_697339
暂无简介~
格式:doc
大小:29KB
软件:Word
页数:4
分类:互联网
上传时间:2011-11-15
浏览量:19