首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DataGridView selectionChanged事件多次触发

DataGridView selectionChanged事件多次触发
EN

Stack Overflow用户
提问于 2014-04-10 05:14:23
回答 4查看 14.3K关注 0票数 11

在我的应用程序中,我使用DataGridView来显示列表。当用户在datagridview中选择记录时,它应该在另一个面板中显示详细信息。对于选择,我被要求使用DataGridView1_SelectionChanged事件。

DataGridView应该只包含一个列,但是细节显示可能包含更多关于所选记录的信息(我们可以通过使用选定的主键值查询数据库中的所有详细信息)。

请告知是否可能获得选定的DataGridView记录的数据基(主键)。DataGridView将基于主键绑定吗?

编辑

我已经实现了DataGridView1.Columns"ID".Visible = false。效果很好。对于选择,我添加了DataGridView1_SelectionChanged事件。

但是DataGridView1_SelectionChanged事件是多次触发的。

EN

回答 4

Stack Overflow用户

发布于 2015-09-05 16:45:04

在执行以下代码之前,可以在选择更改事件中使用DataGrid.focused属性:

代码语言:javascript
运行
复制
private void dg_SelectionChanged(object sender, EventArgs e)
    {
        if (dg.Focused)
        {
            // your code
        }
    } 
票数 36
EN

Stack Overflow用户

发布于 2014-07-30 10:10:28

今天我遇到了同样的问题,经过几个小时的实验,我找到了解决这个问题的办法,或者说是一个解决办法。

代码语言:javascript
运行
复制
this.dgvSearchResult.SelectionChanged -= dgvSearchResult_SelectionChanged;
this.onSearch();
this.dgvSearchResult.SelectionChanged += new EventHandler(dgvSearchResult_SelectionChanged);

希望能帮上忙

票数 2
EN

Stack Overflow用户

发布于 2014-04-10 07:29:06

我尝试过使用RowEnter事件,但是,它对我来说很好。你怎么查的?使用消息框或在事件中放置断点。因为,断点和消息框将从选定的行中读取焦点。然后,当您继续在messagebox或断点之后,网格将重新聚焦,事件将再次执行。

尝试下面的步骤来检查事件执行。

来处理多个执行。

代码语言:javascript
运行
复制
int LastRowIndex =-1;

private void dgv_RowEnter(...)
{
    if (LastRowIndex != e.RowIndex)
    {
        //Place your code here.
    }
    LastRowIndex = e.RowIndex;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22979149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档