ClearSelection后选择Datagridview单元格

时间:2011-07-02 16:56:23

标签: c# .net winforms datagridview

我对DataGridView的这种奇怪行为感到沮丧。

当其数据绑定时,即使网格没有焦点,也会选择一个单元格。我采用了像这样的某些解决方法

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

如我的这个问题所示: Remove blue colored row from DataGridView WinForms

但是这种解决方法有时不起作用并使代码变得混乱。

是否还有其他免费的数据网格视图没有此问题?

4 个答案:

答案 0 :(得分:2)

我遇到了这个问题,并设法通过在每个编码事件的末尾添加myDataGridView.ClearSelection();来解决它。

刚开始只需要在我的DataBind()方法结束时就足够了。然后我为行绘画和其他东西添加了一些自定义行为,它停止工作(即,总是选择第一行)。

所以我说如果您添加了任何自定义事件,可能就是原因。

答案 1 :(得分: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;

答案 2 :(得分:0)

更改绑定网格的方式。

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

答案 3 :(得分:0)

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