DataGridView清除选择后选中单元格

5

我一直被DataGridView这种奇怪的行为所困扰。

当它绑定数据时,即使网格没有焦点,也会选择一个单元格。我已经采取了某些解决方法,例如:

this.ActiveControl = textBoxPartySearch;
 dataGridView1.Refresh();
 dataGridView1.ClearSelection();
 dataGridView1.CurrentCell = null;
 e.Handled = true;

如我在这个问题中建议的:

从DataGridView WinForms中删除蓝色行

但是这种解决方法有时候不起作用,还会让代码变得混乱。

是否有其他免费的datagridview可用,没有这个问题?

4个回答

2
我曾经遇到这个问题,并通过在编码事件结尾添加myDataGridView.ClearSelection();来解决它。
一开始,只要在我的DataBind()方法的末尾加上它就足够了。然后我添加了一些自定义的行绘制和其他内容,它就停止工作了(即始终选择第一行)。
所以我想说,如果您添加了任何自定义事件,那可能是原因。

2

这对我有用:

在构造函数中,绑定设置后,添加一个处理程序到DataBindingComplete事件中:

dgvCommandos.DataSource = systeemCommandos; // = my List<> of objects
dgvCommandos.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dgvCommandos_DataBindingComplete);

处理程序:
void dgvCommandos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    dgvCommandos.ClearSelection();
}

如果您想选择一行(例如在添加/插入新对象后),只需设置:

dgvCommandos.Rows[insertPos].Selected = true;

如果在CellFormatting中有一些会影响绑定过程的东西,那么你必须将它放在DataBindingComplete中。 - Matt J.

0
gvDataSources.CurrentCell.IsCurrent=false;
gvDataSources.CurrentRow.IsCurrent = false;

0

更改绑定网格的方式。

首先准备数据表,然后将其分配给DataGridView。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接