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

原文地址:https://www.cnblogs.com/chasingdreams2017/p/9401927.html

时间: 2024-08-04 20:07:20

Winform DataGridView 取消默认选中行的相关文章

DataGridView取消默认选中行

最近用Winform的DataGridView遇到不少问题,昨晚就碰到个默认选中行的问题.DataGridView在添加数据后会默认选中第 一个单元格或者第一行,我就想取消它的默认选中行.于是就在绑定数据的地方加了dataGridView1.ClearSelection()这句代码, 启动窗体之后发现第一行还是被选中了.后来上网搜索,看到很多人都遇到这个问题,解决方法无非就是那几句代码.可我试了几次都不管用,百思不得其解..       后来才知道得把它放到窗体的Load事件中,于是添加了for

winform编程设定listview选中行

在做项目中,需要用到listview显示数据.同时,项目要求,通过检索用户输入的数据,程序通过搜索,确定数据所在的行并通过程序设定为选中状态并高亮显示.同时,正常响应鼠标单击响应的效果,单击时,程序设定的选中行清除选中状态.类似的效果如下: 以选中第4行为例,我的实现代码如下: //更改listView属性 this.listViewUser.GridLines = true;//显示表格线 this.listViewUser.View = View.Details;//显示表格细节 this.

Winform如何获取ListView选中行数据

1.设计窗体 一个ListView    listView1 一个textBox    txbSelected 2.listView1填充数据 private void Form1_Load(object sender, EventArgs e) { // listView1填充数据 ListViewItem list = listView1.Items.Add("1"); list.SubItems.Add("依依"); ListViewItem list1 =

【easyUI】取消easyui行点击选中事件,智能通过勾选checkbox才能选中行

背景:项目中使用easyui作为前端架子.datagrid默认是点击行就选中此行然后变色. 需求:点击行不让此行选中:只能通过点击复选框才能选中某一行. 解决思路: 1.写点击行函数function onClickRow(rowIndex,rowData){} 2.查询当前datagrid所有选中行. 3.遍历选中行.对比选中行索引和点击行的索引:如果点击行的索引在所有选中行中,则取消点击行的选中状态:如果不存在,则选中点击行. 代码: <script type="text/javascr

C#——DataGridView选中行,在TextBox中显示选中行的内容

C#--DataGridView选中行,在TextBox中显示选中行的内容,在DataGridView的SelectionChanged实践中设置如下代码 private void dataGridView1_SelectionChanged(object sender, EventArgs e) { int index = dataGridView1.SelectedRows[0].Index; //获取选中行的行号 textBox1.Text = dataGridView1.Rows[ind

Gridviewcontrol控件和DataGridView控件获得当前选中行

Gridviewcontrol控件在事件处理函数中取得当前行的某列的值: string buyPlanId = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BuyPlanId").ToString(); int buyState = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BuyState")); 控

C# winform datagridview 无需点击两次即可编辑内嵌控件的方法和删除默认的空行的方法

? 1 2 3 4 //点击一下即可对DataGridView中内嵌控件进行编辑,不需要二次点击 dgv.EditMode =DataGridViewEditMode.EditOnEnter; //DataGridView无默认行 dgv.AllowUserToAddRows = false; C# winform datagridview 无需点击两次即可编辑内嵌控件的方法和删除默认的空行的方法

datagridview里面的checkbox全选和取消全选

全选 设置全选button,选中所有的checkbox private void selectAll_Click(object sender, EventArgs e) { //遍历datagridview中的每一行,判断是否选中,若为选中,则选中 for (int i = 0; i < dataGridView1.Rows.Count; i++) { if ((Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value) == false))

C# 获取DataGridView选中行的值

int index = DataGridView1.CurrentRow.Index;    //取得选中行的索引 txt_ProductId.Text = DataGridView1.Rows[index].Cells["Id"].Value;   //获取单元格列名为‘Id’的值