前言

什么是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条数据大概不到一秒就全部展开了。

DataGridView 基本用法及注意事项相关推荐

  1. 详解synchronized锁的各种用法及注意事项

    1 前言 本文主要通过简单的demo来阐述synchronized锁的各种用法以及使用synchronized锁的相关注意事项,记录下来同时也方便自己记忆. synchronized锁是jvm内置的锁 ...

  2. java case switch面试_Java基础篇——Java中switch case语句用法及注意事项面试题9期

    本文主要说一说关于switch case语句用法及注意事项,应对面试官的提问.希望可以帮助那些对switch存在错误和各种细节问题的"码友". switch-case注意事项 sw ...

  3. socket android用法,Android NDK中socket的用法以及注意事项分析

    与Java层中的套接字相比,本机层中的Socket可以选择更多的配置项,并获得关于当前拥塞状态的更准确的信息,那么 NDK中socket的用法以及注意事项分析,大家清楚吗?下文是爱站技术频道小编为大家 ...

  4. java split函数的用法_java中split函数用法以及注意事项

    java中split函数用法以及注意事项 发布时间:2020-04-23 10:28:23 来源:亿速云 阅读:215 作者:小新 本篇文章和大家了解一下java中split函数用法以及注意事项.有一 ...

  5. C语言sizeof的用法及注意事项

    C语言sizeof的用法及注意事项 求普通变量的大小 #include <stdio.h> int main() {int a = 5;printf ("%d\n", ...

  6. 联合主键的用法及注意事项

    联合主键(Composite Primary Key)是一种在数据库表中使用多个字段组合作为主键的方式.这些字段的组合必须是唯一的,用于唯一标识一条记录.在本文中,我们将详细介绍联合主键的用法及注意事 ...

  7. window.showModalDialog()用法及注意事项

    今天在项目中用到了弹出子窗口,就想到了用JavaScript实现的两种方法,一个是window.open();一个是window.showModalDialog()方法,后者是存在父子关系的一种弹出窗 ...

  8. 在虚拟机中使用物理硬盘的两个用法及注意事项

    虚拟机使用主机物理硬盘用法: ①我新配置的主机是4GB内存,在用DOS启动盘启动时不能加载光驱驱动. 因为我使用sfdisk作的多启动,我的sfdisk在光盘上.因为不能加载光驱驱动,所以不能运行.我 ...

  9. association标签的用法以及注意事项

    Mybatis的association标签简介: mybatis进行多表查询时会用上association标签,它的属性包括property,column,javaType等,它的作用是让实体类对象与 ...

最新文章

  1. Apache实现一个ip(如:127.0.0.1)和多个域名(虚拟主机)绑定
  2. python 笔记:读取mat文件
  3. spark知识点八万字长文最全汇总和高频面试题目
  4. Memcached初探
  5. [转载]模糊系统:挑战与机遇并存——十年研究之感悟 王立新
  6. protect 继承_C++ protected继承和private继承是不是没用的废物?
  7. 【Python】Pygame模块设计游戏
  8. fasterrcnn论文_【论文解读】Yolo三部曲解读——Yolov1
  9. Android5.0以下drawable tag vector错误的解决办法(转发)
  10. excel自动排班表_企业人员较多该怎么做考勤管理?该用什么排班软件?
  11. sql注入三种工具(主要sqlmap)
  12. 教你如何去掉桌面图标的蓝底
  13. weak_auth 小宁写了一个登陆验证页面,随手就设了一个密码。
  14. 刷入twrp_twrp刷入面具进入recovery(twrp)的方式获取root刷入第三方rom获取第三方rom包类原生rom包的网络连接受限问题
  15. Qt 使用布局管理器失效或者异常
  16. 选择偏好(Selectional Preference)概念解释及其相关研究
  17. vfp导出excel的简单方法
  18. 上海“网红流浪汉”你站住!To B人有话对你说~~~
  19. 效能大提升!百度与英特尔携手开拉新Nervana NNP芯片
  20. Reactor响应式流的核心机制——背压机制

热门文章

  1. 全媒体时代的速度与激情:香港凤凰卫视云端转型实践
  2. 《设计模式》(博客园精华集)
  3. 学习 Bootstrap 5 之 Forms
  4. 蚁群算法ACO求解连续函数最值问题
  5. Linux笔记本 安装 qq/TIM/微信/百度网盘......解决方案
  6. python给定一个整数n、判断n是否为素数_python判断所输入的任意一个正整数是否为素数的两种方法...
  7. CSS - id选择器 和 类选择器
  8. HTML中<meta>标签的name属性都有哪些——标准元数据名称
  9. 计算机毕业设计ssm电影售票管理系统n9y72系统+程序+源码+lw+远程部署
  10. pix2pixhd_基于pix2pixHD的行人图像生成