c# 如何用右键选中dataGridView的单元格

问题描述

想在WINFORM的dataGridView里面用使用右键达到和左键一样的选中功能,新手求助!

解决方案

解决方案二:
新手求助!
解决方案三:
在CellMouseDown事件中写if(e.Button==MouseButtons.Right){if(e.RowIndex==-1)return;sGrid.Rows[e.RowIndex].Selected=true;}

解决方案四:
//写在CellMouseDown事件中privatevoidDataGridView_CellMouseDown(objectsender,DataGridViewCellMouseEventArgse){if(e.RowIndex>=0){if(e.Button==System.Windows.Forms.MouseButtons.Right){dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected=true;dataGridView1.ClearSelection();}}

解决方案五:
引用2楼bdmh的回复:

在CellMouseDown事件中写C#codeif(e.Button==MouseButtons.Right){if(e.RowIndex==-1)return;……

+1
解决方案六:
引用2楼bdmh的回复:

在CellMouseDown事件中写C#codeif(e.Button==MouseButtons.Right){if(e.RowIndex==-1)return;……

不行。显示错误码为缺少引用什么之类的?
解决方案七:
原来是我事件选错了,但是还有一个他表格打开默认选中的第一个格还存在的!
解决方案八:
引用3楼porschev的回复:

C#code//写在CellMouseDown事件中privatevoidDataGridView_CellMouseDown(objectsender,DataGridViewCellMouseEventArgse){if(e.RowIndex>=0){……

选中选中了。但是表格里面实际的值没有变。还是保留在原来左键选中的值里
解决方案九:
1.在你的项目里新建“XDataGridView.cs”的文件,把下面内容拷贝进去:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Text;usingSystem.Windows.Forms;namespaceCommonTools.Control{[ToolboxItem(true),Category("ZteCommonTools"),Description("ZteCommonTools")]publicclassXDataGridView:DataGridView{privateXDataGridViewTypexType;[Browsable(true),Category("ZteCommonTools"),Description("DataGridView类型."),DefaultValue(XDataGridViewType.None)]publicXDataGridViewTypeXType{get{returnthis.xType;}set{this.xType=value;}}privateBooleanxRightMouseButtonSelect;[Browsable(true),Category("ZteCommonTools"),Description("允许鼠标右键选择DataGridViewRow."),DefaultValue(false)]publicBooleanXRightMouseButtonSelect{get{returnthis.xRightMouseButtonSelect;}set{this.xRightMouseButtonSelect=value;}}protectedoverridevoidOnCellMouseDown(DataGridViewCellMouseEventArgse){BooleansetAnchorCellAddress=false;base.OnCellMouseDown(e);if(!e.Button.Equals(MouseButtons.Right))return;//只处理鼠标右键.if(e.RowIndex.Equals(-1)||e.ColumnIndex.Equals(-1))return;//不处理RowHeader或ColumnHeader上的响应事件.if(!this.xRightMouseButtonSelect)return;//只处理开启"右键选择"功能的响应事件.switch(ModifierKeys){caseKeys.Control:this.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected=!this.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected;this.SetCurrentCellAddressCore(e.ColumnIndex,e.RowIndex,false,true,true);break;caseKeys.Shift:setAnchorCellAddress=true;DataGridViewCellcell=this.CurrentCell;this.ClearSelection();if(cell.RowIndex<e.RowIndex){for(inti=cell.RowIndex;i<=e.RowIndex;i++){for(intj=cell.ColumnIndex;j<=e.ColumnIndex;j++){this.Rows[i].Cells[j].Selected=true;}}}else{for(inti=e.RowIndex;i<=cell.RowIndex;i++){for(intj=e.ColumnIndex;j<=cell.ColumnIndex;j++){this.Rows[i].Cells[j].Selected=true;}}}break;default:this.ClearSelection();this.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected=!this.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected;this.SetCurrentCellAddressCore(e.ColumnIndex,e.RowIndex,false,true,true);break;}}}}

2.在你的项目里新建“XDataGridViewType.cs”的文件,把下面内容拷贝进去:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceCommonTools.Control{publicenumXDataGridViewType{///<summary>///无特殊功能限制的DataGridViewType.///</summary>None,}}

3.这时你项目的toolbox中会有一个XDataGridView的控件,是对DataGridView右键选中cell的支持,直接拖到UI上就可以了。4.注意,当你把XDataGridView控件拖到UI之后,你需要在属性栏里设置它的“XRightMouseButtonSelect”属性为true,这样就可以了。实际上这是我自己做的一个支持右键的DataGridView,lz可以把它整理成库,方便以后调用。
解决方案十:
补充一下,当你不设置“XRightMouseButtonSelect”属性时,他就是一个普通的DataGridView控件。
解决方案十一:
引用2楼bdmh的回复:

在CellMouseDown事件中写C#codeif(e.Button==MouseButtons.Right){if(e.RowIndex==-1)return;……

++
解决方案十二:
看看,不错!~
解决方案十三:
引用3楼porschev的回复:

C#code//写在CellMouseDown事件中privatevoidDataGridView_CellMouseDown(objectsender,DataGridViewCellMouseEventArgse){if(e.RowIndex>=0){……

good!

时间: 2024-07-29 01:51:10

c# 如何用右键选中dataGridView的单元格的相关文章

DW中按左右键切换到相邻单元格

如何实现DW中按左右键切换到相邻单元格呢: 首先声明外部函数:  Subroutine keybd_event(int bVk,int bScan,ulong dwFlags,ulong dwExtraInfo) LIBRARY "user32.dll" 一.如果不想在DW的单元格内利用左右键编辑内容,只要一按下左右键就切换到其他单元格的话可以: 新建ue_key 对应 pbm_dwnkey ,代码如下: if key=keyleftarrow! then keybd_event(16

事件-C# DataGridView 格式化单元格问题

问题描述 C# DataGridView 格式化单元格问题 我用DataGridView做了分页查询,显示的列中有一列是数字值,要在绑定数据源后,对该列值进行格式化成字符串,我使用了CellFormatting事件,可为什么该事件在频繁的被触发,而不是只有绑定数据源后触发一轮,只要窗口激活或在DataGridView里点击改变行,都会触发CellFormatting事件,窗口最小化再最大化后数据像是重加载一样(或许说是Grid控件重绘了一样),请高手给指点一下 解决方案 选择合适的事件去处理 解

c#-C#使用UltraGrid控件,如何实现用鼠标拖拽来选中多个单元格

问题描述 C#使用UltraGrid控件,如何实现用鼠标拖拽来选中多个单元格 C# 使用UltraGrid这个控件,属性中SelectTypeCell也设置了为ExtendedAutoDrag,但是没办法实现鼠标托拽选中多个单元格,只能选中某个单元格后,按住Shift键,再选中需要选中的多个单元格的最后一个,才能选中多个单元格,请问怎么实现直接用鼠标拖拽就可选中多个单元格![图片说明](http://img.ask.csdn.net/upload/201505/22/1432263419_684

datagridview-vb.net DataGridView选取单元格问题

问题描述 vb.net DataGridView选取单元格问题 在vb.net的DataGridView控件中如何从单元格内容为1的开始逐单元格读取到36如下图 控件中如何从单元格内容为1的开始逐读取到36 能否达到如下效果: 解决方案 VB for j as integer = 0 to grid.Rows(i).Cells.Count - 1 for i as integer = 0 to grid.Rows.Count - 1 MsgBox(grid.Rows(i).Cells(j).Va

如何让datagridview的单元格只能输入正整数、正小数、负整数、负小数?(内有用于文本框的该方法),如何改为datagridview的?

问题描述 如何让datagridview的单元格只能输入正整数.正小数.负整数.负小数?这里有用于文本框的该方法,如何改为datagridview的?下面是用于文本框的该种方法(代码原出处:http://hi.baidu.com/luogenewuser/blog/item/c6c5583cc027fd32b9998f64.html):PrivateSubTextBox1_KeyPress(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.KeyP

WinForm中DataGridView验证单元格输入的是数字

转载:http://www.cnblogs.com/ganqiyin/archive/2013/02/18/2915491.html 事件:DataGridView验证单元格输入的是数字,DataGridView源数据是从数据库读取的.      需求:当用户输入的不是数字的时候需要提示信息(数据是直接绑定数据库的,因此dataGridView有自己的报错功能,我们需要屏蔽掉它,显示自己的错误提示!)      实现: 选择DataGridView的CellValidating事件       

vb.net怎么计算datagridview指定单元格的数据求和

问题描述 datagridview里已经显示出了数据,代码如下,inorout列有:收入和支出两个属性.怎么对这里面的inorout=收入条件下的金额求和呢? DataGridView1.DataSource=NothingMyDs.Clear()DimSQLStrAsString="Selectnumas编号,jineas金额,dateas日期,nameas经手人,typeas项目,inoroutas收支,bzas备注Fromrcszwheredatebetween'"&Da

datagridView 在一个单元格中怎么实现多个checkbox,有代码的贴出来看看

问题描述 winformC# 解决方案 解决方案二:自定义列的类型,自己做一个自定义控件,里面放置多个checkbox,然后把这个自定义组件放置到列里自定义列类型,参考解决方案三:DataGridView控件中绑定复选框实例//加载绑定数据集合privateList<Fruit>P_Fruit;privatevoidFrm_Main_Load(objectsender,EventArgse){DataGridViewCheckBoxColumndgvc=//创建列对象newDataGridVi

datagridview合并单元格问题

问题描述 各位帮忙看一下啊. 解决方案 解决方案二:还是用C1吧.解决方案三:该回复于2011-11-22 15:41:33被版主删除解决方案四:这个可以合并么?解决方案五:这个没人会吗????