Datagridview代码设置选中行后,没有触发SelectionChanged事件

winform 所有DataGridView触发事件和说明举例 阅读详情

不知道大家有没有遇到过这个问题,在winform开发软件的过程中,使用Datagridview代码设置选中行后,没有触发SelectionChanged事件,但是通过界面点击单元格或者选中行却是可以触发SelectionChanged事件的。
可能平时只设置this.dataGridView.Rows[index].Selected = true这行代码就可以满足要求了,界面上看确实是选中了的,但是如果除了上面提到的只设置这行代码是不能触发SelectionChanged事件的,那就不能满足你这个事件中的代码块功能的执行。除此之外还有一个问题,比如你在写行移动时,上下移动时需要在代码中设置选中行的,如果也只是用这一行代码设置选中行,你会发现界面上看到的行选中了,但是实际并没有选中,这就会影响你对当前行数据的正确获取,从而影响上下移动功能的效果。

所以,针对这两种情况带来的困扰,有两种方式解决方案:
1)在你设置选中行的代码块处,完成SelectionChanged的内容
2)(推荐)在设置选中行代码前,设置dataGridView.CurrentCell = null,就能触发SelectionChanged事件,详见下面代码
下见代码:

 private void DataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            var curRow = this.dataGridView1.CurrentRow;
            if (curRow == null)
                return;
            if (curRow.Cells[0].Value == null)
                return;
            var action = this.actions.Find(p => p.ActionName == curRow.Cells[0].Value.ToString());
            this.tb_describle.Text = action.ChiDescrible;
        }
//设置选中行
  if (this.dataGridView1.RowCount > 0)
            {
                this.dataGridView1.CurrentCell = null;
                this.dataGridView1.Rows[0].Selected = true;
                this.dataGridView1.CurrentCell = this.dataGridView1.Rows[0].Cells[0];
            }
ArcGIS License Server点击启动没反应,许可管理器无法启动怎么办 4 当我们再打开ArcGIS License Server Administrator的时候。3 在【服务】中找到【ArcGIS License Manager】双击。无法启动ArcGIS License Server的情况。在使用ArcGIS的过程中,我们经常会遇到。专注GIS领域知识分享,交流业软件技巧。欢迎关注,不定期分享GIS各种问题和技巧。1 右击我的电脑——【管理】服务状态——启动,确定即可。启动类型选择——自动。 阅读详情

相关推荐

ENVI哨兵一号数据处理

使用ENVI+SarScape处理哨兵数据

Rjjjjj11的博客 2万+

[C#]datagridView实现的数据联动时selectionChanged事件发生多次的解决方法

Q:对于两个datagridView实现的数据联动,主datagridView绑定数据时selectionChanged事件发生多次,什么原因,如何避免? A:selectionChanged事件MSDN上叙述:“在当前选择出现更改时发生。” 实际应用中,子表数据填充代码要写在selectionChanged事件响应方法中。 经测试,selectionChanged事件有如下规律: Sel

ltolll的博客(技术版) 1万+

从零开始讲DDR(5)——读懂Datasheet

对于开发人员来说,需要根据实际场景和使用的需要,使用不同厂家,不同型号的DDR,虽然原理上大同小异,但是还是有一些细节上的需要注意的地方,接触一个新的DDR芯片,首先就是需要找到对应的datasheet,而能都读懂datasheet,也是一个硬件工程师的必备技能。

apple_53311083的博客 5135

关于DataGridView中当前改变的事件

1、使用SelectionChanged事件 2、使用RowEnter事件

jzt_designer的专栏 1万+

WPF Tabcontrol SelectionChanged的错误触发问题

事件是可以传递的,SelectionChanged也不例外 我设计了这样一个界面: 当我点击右边的ListView的时候,会触发ListView_SelectionChanged这个事件,然后这个事件会传递给导航栏的TabControl,也就触发了TabControl_SelectionChanged事件,使整个页面刷新,但我并不想要这个结果,我只是想要触发前面的事件,后面的事件是我要避免...

Change的博客 3369

真正的SelectionChanged事件

最近闲来无事写个Eclipse RCP小程序,需要用到一个特性,就是窗口内有两个视图,其中一个视图内有一个TreeView控件,要求点击TreeView控件上的不同节点,另外一个视图能够收到的SelectionChanged事件,并且进处理。这是一个很简单的功能,到网上查了一下,基本上都是一个模式:把左边的TreeView注册为SelectionProvidor,右边的视图注册为Selectio...

weixin_33901843的博客 1522

C#datagridview_selectionchanged的异常

我在做一个酒店的客房展示,运用了selectionchanged事件,选择datagridview的一就换图片。调试都是成功的,但是我在不调试直接运的时候一直报这个错: 后来查了一下知道问题是,在点开跳转的button的时候就自动执了这个事件,但是此时没有任何选中的索引。 我是按照网上的一个解决办法,直接用的click事件,然后选择selectmode改成FullRowSel

Joker7的专栏 1948

2015.1.10 解决DataGridView SelectionChanged事件自动触发问题

2015.1.10 解决DataGridView SelectionChanged事件自动触发问题

asdfgh0077的博客 394

C#datagridview选中后textbox显示选中的内容

我想让datagridview中某一选中时,textbox中显示选中的值,datagridview选中模式是整:this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;然后 private void dataGridView1_SelectionChanged(object sender...

CHJ_20160630的博客 960

关于datagridviewselectionchanged时间问题!

DGV控件,根据选取的不同激发事件,如果用SelectionChanged比如一下dgvParent.DataSource = dt;//数据绑定this.dgvParent.SelectionChanged += new System.EventHandler(this.dgvParent_SelectionChanged);//注册事件 这样做后,DATAGridView绑定数据

1715

关于DataGridView控件的用法

DataGridView控件的应用和问题总结 在DataGridView 中通过遍历每一的指定单元格 foreach (DataGridViewRow row in this.dgvBookList.Rows) { if (row.Cells["BarCode"].Value.ToString() == this.txtBarCode.Text.Trim(...

qq_36695087的博客 590

DataGridView号发生变化 使用的事件

DataGridView没有这么专门为号发生变化时触发事件,我们只能用SelectionChanged和CurrentCellChanged做些设置后实现。 1、使用SelectionChanged事件 MSDN的事件说明:此事件会在选择或取消选择单元格(无论是以编程方式还是通过用户操作的方式)时发生(所以此事件与CurrentCellChanged一样,是针对单元格设计的,DataGr...

weixin_30826761的博客 459

DataGridView密码列

想用DataGridView来显示密码,但又不要那么容易就显示出来,只有选中该密码列的单元格时才显示密码,不选中时则不显示,搜索一圈,发现都是什么采用EditingControlShowing、CellFormatting的,而且那些办法完全没有意义,因为那样处理后,你已经丢失了原有的密码信息。于是想,可以设置1列隐藏列(不显示)用来保存密码信息,一列显示列,用来在需要时显示密码。,写一个,能力不够,写不出来。本也想参考微软官网一些自定义。搜索到这个回答十分中肯:“

zslefour的专栏 815

winform datagridview中combobox列改变选项时触发其他列变化

之前想使用DataGridViewSelectionChanged事件,但是使用了后并没有达到效果 最后使用下面的方式实现: private void materialCheckGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { int ci...

weixin_30808253的博客 583

【winform】datagridview获取当前停留时间

RowStateChanged 的问题 RowStateChanged事件,也就是状态发生变化时触发事件,这个事件无法实现号变化而触发这个要求,因为当我们从一选择至另一时,先触发号的状态变事件,然后触发号的状态变更事件,也就是换一次触发两次事件。 private void dataGridView1_RowStateChanged(object sender, DataGri...

weixin_30260399的博客 237

winform DataGridView 选择 获取数据

<br />  private void WorkerGrid_SelectionChanged(object sender, EventArgs e)<br />        {<br />            this.WorkerGrid.SelectionMode = DataGridViewSelectionMode.FullRowSelect;<br />            txtwid.Text = this.WorkerGrid.CurrentRow.Cells[0].Value.T

rubychen410的专栏 8834

C#中的DataGridView控件(WIN FORM),数据绑定与数据联动

一种方法是在DataGridView.RowEnter中写类似如下代码,labCusId.Text = dgvCustomer.CurrentRow.Cells[col].Value.ToString(); 字段一多,这种方法就非常繁琐。这里介绍另一种利用数据绑定实现数据联动的方法。 private void FillSaledgv(string CusIDStr) { dgvSale

ltolll的博客(技术版) 6349
上一篇: Winform中datagridview显示数据时,不显示特殊符号,如下划线不显示问题
下一篇: 无法加载SQLite.Interop.dll:找不到指定模块
月光使者1号
博客等级 码龄12年 8粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月光使者1号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值