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和博客园,欢迎读者转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接!

posted @ 2018-08-01 16:18  ChasingDreams  阅读(442)  评论(0编辑  收藏  举报