DataGridView 基本用法及注意事项

前言

什么是DataGridView

DataGridView是windows系统控件名称,其具有极高的可配置性和可扩展性,提供有大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。若要以小型网格显示只读值,或者若要使用户能够编辑具有数百万条记录的表,DataGridView 控件将提供可以方便地进行编程以及有效地利用内存的解决方案。

在这里插入图片描述

DataGridView的结构

DataGridView及其相关类被设计为用于显示和编辑表格数据式数据的灵活的、可扩展的体系。这些类都位于system.Windows.Forms命名空间,它们的名称也都有共同前缀"DataGridView"。

结构元素

DataGridViewElement类有两个属性,一是DataGridView,该属性提供了对其所属的DataGridView的引用;二是State,该属性表示当前的状态,其值为DataGridViewElementStates枚举,该枚举支持位运算,这意味着可以设置组合状态。

单元格和组(Cells and Bands)

DataGridView由两种基本的对象组成:单元格(cell)和组(band)。所有的单元格都继承自DataGridViewCell基类。 两种类型的组(或称集合)DataGridViewColumn和DataGridViewRow都继承自DataGridViewBand 基类,表示一组结合在一起的单元格。

DataGridView会与一些类进行互操作,但最常打交道的则是如下三个:DataGridViewCell, DataGridViewColumn,DataGridViewRow。

单元格(DataGridViewCell)

单元格(cell)是操作DataGridView的基本单位。可以通过DataGridViewRow 类的Cells 集合属性访问一行包含的单元格,通过DataGridView的SelectedCells集合属性访问当前选中的单元格,通过DataGridView的CurrentCell属性访问当前的单元格。

列(DataGridViewColumn)

DataGridView所附带的数据(这些数据可以通过绑定或非绑定方式附加到控件)的结构表现为DataGridView的列。你可以使用DataGridView的Columns集合属性访问DataGridView所包含的列,使用SelectedColumns 集合属性访问当前选中的列。

行(DataGridViewRow)

DataGridViewRow类用于显示数据源的一行数据。可以通过DataGridView控件的Rows集合属性来访问其包含的行,通过SelectedRows集合属性访问当前选中的行。

添加行列

			/*------ Add Line ------*/
            for (int i = 0; i < 6; i++)
            {
                DataGridView.Columns.Add(new DataGridViewTextBoxColumn());               
            }
            /*------ Add Rows ------*/
            for (int i = 0; i < 1; i++)
            {
                int j = 0;
                int index = DataGridView.Rows.Add();
                DataGridView.Rows[index].Cells[j++].Value = i;
                DataGridView.Rows[index].Cells[j++].Value = 1;
                DataGridView.Rows[index].Cells[j++].Value = 2;
                DataGridView.Rows[index].Cells[j++].Value = 3;
                DataGridView.Rows[index].Cells[j++].Value = 4;
                DataGridView.Rows[index].Cells[j++].Value = 5;
            }

在这里插入图片描述

添加表头

            DataGridView.Columns[0].HeaderText = " NAME";
            DataGridView.Columns[1].HeaderText = " DATA";
            DataGridView.Columns[2].HeaderText = " DATA";
            DataGridView.Columns[3].HeaderText = " DATA";
            DataGridView.Columns[4].HeaderText = " DATA";
            DataGridView.Columns[5].HeaderText = " DATA";

属性设置

// 设置 DataGridView 为只读 
DataGridView.ReadOnly = true; 
// 设置 DataGridView 的第2列整列单元格为只读 
DataGridView.Columns[1].ReadOnly = true; 
// 设置 DataGridView 的第3行整行单元格为只读 
DataGridView.Rows[2].ReadOnly = true; 
// 设置 DataGridView 的[0,0]单元格为只读 
DataGridView[0, 0].ReadOnly = true; ```
// 禁止用户手动添加新行
DataGridView.AllowUserToAddRows = false;

注意事项

请谨慎设置WinForm控件DataGridView列的AutoSizeMode属性。
在WinForm控件DataGridView中编辑列时,当该属性值不为None时,比如DataGridView显示的数据达到上万级别时,将导致严重的性能问题。
我在尝试展开上万条数据时,上了个厕所的时间数据都还没加载完成,刚开始还以为是该控件解析高量级的数据较费时,花了很长时间测试后才确认问题出在DataGridView列的AutoSizeMode属性上,因为我在编辑列时将列的AutoSizeMode属性设置为AllCells,每一条单元格在加载时,自动适用大小属性,将适用关闭,1W条数据大概不到一秒就全部展开了。

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值