最近做winform项目,遇到一个问题。  纠结了几天,最终解决了,记录一下!

新建一个Form窗体,拽一个DataGridView上去,然后写一个方法

private void BindData()

{

DataTable dt = xxxxxxx;
dgvFormDetail.AutoGenerateColumns = false;
dgvFormDetail.DataSource = dt;
dgvFormDetail.ClearSelection();

}

调用dgvFormDetail.ClearSelection();,本意是清除所有数据行的选中状态,让数据绑定之后不要有任何的默认选中。

把BindData放在页面的构造方法里面

public QingLingForm()
{
InitializeComponent();
BindData();
}

结果发现加载出来的数据行的第一行依然是蓝色的选中状态的颜色。  貌似dgvFormDetail.ClearSelection();这句没起作用?

搜索网上发现好多人也遇到了这个问题,解决方案五花八门。

其中stackoverflow上面有个帖子,有个人的留言提醒了我

https://stackoverflow.com/questions/5960897/remove-blue-colored-row-from-datagridview-winforms

大意是这个ClearSelection();方法必须是当你的datagirdview在展示状态时才有效,

那就是说问题出在加载顺序上了!!!

BindData放在构造方法里面,可能执行的时候DataGridView还没绘制完成,调用ClearSelection当然不会起作用!!!

那么BindData放在哪里合适呢,有两种方式:

可以重写Form的protected virtual void OnLoad(EventArgs e);方法,

overide这个方法,然后把BindData放到这里面,可以!

protected override void OnLoad(EventArgs e)
{
     BindData();
}

还可以给Form指定Load事件的方法,把BindData()放到Form_Load里面

private void Form_Load(object sender, EventArgs e)
{
BindData();
}

两个方法其实是一样的,不同方式而已,并且程序只会执行其中一个。  一旦override了OnLoad事件,Form_Load就不会执行了。

关于DataGridView的ClearSelection方法的更多相关文章

  1. 解决winform datagridview的ClearSelection无效问题

    因为把方法放在了界面的构造方法里,此时datagridview还没绘制出来,所以ClearSelection方法无效,放在control或form的load方法里就没问题了 参考:https://ww ...

  2. winfrom导出DataGridView为Excel方法

    声明:此方法需要电脑安装Excel软件 需要类库:Microsoft.Office.Interop.Excel.dll 可百度自行下载 方法代码: /// <summary> /// 导出 ...

  3. DataGridView 绑定数据方法

    DataGridView控件用于显示来自多种外部数据源中的数据,用户可以在此控件添加行和列,并可以填充数据.   如要让DataGridView显示数据库中的数据,只需要将此控件绑定到挑用数据库的数据 ...

  4. vb.net datagridview 使用方法

    目录:  1. 取得或者修改当前单元格的内容  2. 设定单元格只读  3. 不显示最下面的新行  4. 判断新增行  5. 行的用户删除操作的自定义  6. 行.列的隐藏和删除  7. 禁止列或者行 ...

  5. DataGridView操作

    C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...

  6. DataGridView控件

    DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特 ...

  7. C# winform DataGridView

    C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...

  8. C# winform DataGridView操作 (转)

    C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...

  9. C#中DataGridView控件使用大全

    DataGridView 动态添加新行: DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动 ...

随机推荐

  1. Python Twisted架构英文版

    原作出处:twisted-intro 作者:Dave 转载声明:版权归原作出处所有,转载只为让更多人看到这部优秀作品合集,如果侵权,请留言告知 Twisted Introduction This mu ...

  2. Java面向对象-递归

    Java面向对象-递归 递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己: 我们给出一个案例,求阶乘  1*2*3*...*(n-1)*n 我们用非递归和递归方式分别实现下, ...

  3. Linux日志文件查看和搜查命令(错误日志排查定位)

    一.cat命令 cat 命令用于连接文件并打印到标准输出设备上,主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能. 语法格式 cat [-AbeEnstTuv] fileName 参数说明 ...

  4. leetcode452

    public class Solution { public int FindMinArrowShots(int[,] points) { // multidimensional array cann ...

  5. InputStreamReader和BufferedReader的区别

    .InputStream.OutputStream 处理字节流的抽象类 InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等. OutputSt ...

  6. 如何使用ThinkPHP5 ,自动生成目录?

    具体步骤: A.在build.php中按照实际需求修改定义模块的内容: B.修改Public/index.php,在代码中加入: // 读取自动生成定义文件 $build = include '/.. ...

  7. UIThread

    功能如下:点击Create则新创建一个窗口 一 . 资源中添加对话框,右键添加类MyDlg 双击初始对话框中的按钮,实现按钮功能:点击则创建一个对话框 CMyDialog* pDialog = new ...

  8. 闲来无事,做做Google:21 道能力倾向测试面试题

    1. Solve this cryptic equation, realizing of course that values for Mand E could be interchanged. No ...

  9. laravel 模型关联之(多对多)

    多对多 多对多就相当于一个专题Topic有多个文章,但是这多个文章又属于多个专题, 而且多对都必须有一个表是他们之间的关联关系表PostTopic Post表和Topic表之间没有直接的关联,而且通过 ...

  10. Java AOP 注解配置与xml配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...