我对DataGridView的这种奇怪行为感到沮丧。
当其数据绑定时,即使网格没有焦点,也会选择一个单元格。我采用了像这样的某些解决方法
this.ActiveControl = textBoxPartySearch;
dataGridView1.Refresh();
dataGridView1.ClearSelection();
dataGridView1.CurrentCell = null;
e.Handled = true;
如我的这个问题所示: Remove blue colored row from DataGridView WinForms
但是这种解决方法有时不起作用并使代码变得混乱。
是否还有其他免费的数据网格视图没有此问题?
答案 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;