Winform DataGridView 取消默认选中行
困境
网上有很多解决方法,可是很多读者照做并不生效。追究其原因,问题出现在许多博主没有搞清楚DataGridView绑定与当前触发事件的关系。
复现
private void Frm_Load(object sender, EventArgs e)
{
datagridview.AutoGenerateColumns = false;
DataTable dataTable = new DataTable();
for (int i = 1; i <= 7; i++)
{
dataTable.Columns.Add("DPN" + i.ToString());
}
DataRow row11 = dataTable.NewRow();
row11["DPN1"] = "Test1";
row11["DPN2"] = "Test1";
row11["DPN3"] = "Test1";
row11["DPN4"] = "Test1";
row11["DPN5"] = "Test1";
row11["DPN6"] = "Test1";
row11["DPN7"] = "Test1";
dataTable.Rows.Add(row11);
datagridview.DataSource = dataTable;
datagridview.ClearSelection = false;
}
使用datagridview.ClearSelection = false;
是很多博客的解决办法,但是在此示例里面并不生效!!!
解决
其实很简单,使用DataBindingComplete
事件即可。该事件发生在数据源绑定完成之后。
private void datagridview_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
datagridview.ClearSelection();
}
感谢
同事 PhantomSix
声明
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,发表在CSDN和博客园,欢迎读者转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接!