DataGridView selectionChanged事件多次触发

San*_*evr 6 c# data-binding datagridview winforms selectionchanged

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

DataGridView应该只包含一列,但详细信息显示可能包含所选记录的更多信息(我们可以通过查询所选的主键值来获取数据库中的所有详细信息).

请告诉我是否可以获取所选DataGridView记录的datakey(主键).DataGridView是否会基于主键进行绑定?

编辑

我已经实现了DataGridView1.Columns ["ID"].Visible = false.它运作良好.为了选择,我添加了DataGridView1_SelectionChanged事件.

但DataGridView1_SelectionChanged事件多次触发.

小智 22

在执行代码之前,您可以在selectionchanged事件中使用DataGrid.focused属性,如下所示:

private void dg_SelectionChanged(object sender, EventArgs e)
    {
        if (dg.Focused)
        {
            // your code
        }
    } 
Run Code Online (Sandbox Code Playgroud)

  • 尊重!这个问题在Win Forms中很常见,你有最简单的解决方案!你能解释一下这家酒店的用途吗?MSDN文档不够清晰. (3认同)

She*_*ell 1

我尝试过RowEnter事件,但它对我来说效果很好。你如何检查它?使用消息框或在事件中放置断点。因为,断点和消息框会失去所选行的焦点。然后,当您在消息框或断点之后继续时,网格将重新获得焦点,并且事件将再次执行。

尝试执行以下步骤来检查事件执行情况。 在此输入图像描述

处理多次执行。

int LastRowIndex =-1;

private void dgv_RowEnter(...)
{
    if (LastRowIndex != e.RowIndex)
    {
        //Place your code here.
    }
    LastRowIndex = e.RowIndex;
}
Run Code Online (Sandbox Code Playgroud)