【WinForm详细教程七】WinForm中的DataGridView控件
文章目录
- 1.主要属性
- DataSource
- 行(Row 相关属性)
- 列(Column 相关属性)
- 单元格(Cell 相关属性)
- 逻辑删除
- AllowUserToAddRows
- AllowUserToDeleteRows
- AllowUserToOrderColumns
- 其他布局和行为属性
- 2.控件中的行、列和单元格类
- DataGridViewColumn 类的属性
- DataGridViewRow 类的属性
- DataGridViewCell 类的属性
- 3.一个简单的示例,连接SQL数据库示例
- 4.DataGridView 数据源
- 绑定方式
- 优化建议
DataGridView
是一种在Windows窗体应用程序中使用的控件,它以网格(表格)的形式显示数据。这种控件允许用户定义行和列,以及对应的单元格。核心概念:
- 行(Rows):数据呈现的横向序列。
- 列(Columns):数据呈现的纵向序列。
- 单元格(Cells):行和列交叉点的数据存储单位。
1.主要属性
DataSource
DataSource
属性用于设置 DataGridView
控件的数据源。常用的数据源类型有:
DataTable
:从数据库查询得到的数据表。List<T>
:泛型集合,其中T
是数据模型的类型。
行(Row 相关属性)
- DataGridViewRow: 表示
DataGridView
控件中的一行。 - DataGridViewRowCollection: 表示
DataGridView
控件中所有行的集合。 - Rows: 通过此属性可以访问或操作行集合中的行。
列(Column 相关属性)
- DataGridViewColumn: 表示
DataGridView
控件中的一列。 - DataGridViewColumnCollection: 表示控件中所有列的集合。
- Columns: 通过此属性可以访问或操作列集合中的列。
单元格(Cell 相关属性)
- DataGridViewCell: 表示
DataGridView
控件中的一个单元格。 - Value: 单元格存储的实际数据。
- Selected: 表示单元格是否被选中。
- RowIndex: 单元格所在的行索引。
- ColumnIndex: 单元格所在的列索引。
- FormattedValue: 用于显示的单元格经过格式化后的值。
逻辑删除
在某些业务场景下,行记录不是真正从数据源中删除,而是通过修改标识列的值来表示记录的状态(例如,0
表示正常,1
表示已删除)。
AllowUserToAddRows
控制是否显示用于添加新行的空白行。
True
: 显示空白行,并且在用户输入数据时自动添加新的空白行。输入完成后按回车,数据就添加到控件中。False
: 不显示用于添加新行的空白行。
AllowUserToDeleteRows
控制用户是否可以从 DataGridView
中删除行,默认值为 true
。用户可以通过选中行并按 Delete
键来删除行。
AllowUserToOrderColumns
控制是否允许用户手动调整列的位置。
True
: 允许用户通过拖动来重新放置列。False
: 不允许用户手动调整列的位置。
其他布局和行为属性
- AllowUserToResizeColumns: 是否允许用户调整列宽。
- AllowUserToResizeRows: 是否允许用户调整行高。
- AutoSizeColumnsMode: 确定列的自动大小调整模式。
- AutoSizeRowsMode: 确定行的自动大小调整模式。
- EditMode: 定义何时可以编辑单元格的内容。
- GridColor: 网格线的颜色。
- MultiSelect: 是否允许用户同时选择多个单元格、行或列。
- SelectionMode: 设置单元格选择模式。
2.控件中的行、列和单元格类
DataGridViewColumn 类的属性
- Name: 列的名称。
- ColumnType: 列的类型,例如
DataGridViewTextBoxColumn
,DataGridViewCheckBoxColumn
等。 - DataPropertyName: 绑定到数据源的属性名。
- HeaderText: 列标题显示的文本。
DataGridViewRow 类的属性
- DataBoundItem: 绑定行的数据对象。
- Selected: 行是否被选中。
- State: 行的状态,如
DataGridViewElementStates
。 - Cells: 行的单元格集合。
DataGridViewCell 类的属性
- Value: 单元格的实际值。
- Selected: 是否被选中。
- RowIndex: 所在行的索引。
- OwningRow: 所属的行。
- OwningColumn: 所属的列。
- ColumnIndex: 所在列的索引。
- FormattedValue: 显示格式化后的值。
- FormattedValueType: 格式化值的类型。
- ValueType: 单元格值的数据类型。
3.一个简单的示例,连接SQL数据库示例
using System.Data;
using WinFormsTest.Helper;namespace WinFormsTest
{public partial class frmDataGridView : Form{public frmDataGridView(){InitializeComponent();}private void frmDataGridView_Load(object sender, EventArgs e){string sql = "select * from UserInfo";DataTable dt = DBHelper.GetDataTable(sql, 1);dataGridView1.AutoGenerateColumns = false;dataGridView1.DataSource = dt;}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){DataGridViewCell cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];string nameUser = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();if (cell.FormattedValue.ToString() == "删除"){MessageBox.Show("删除了:" + nameUser);}else if (cell.FormattedValue.ToString() == "修改"){MessageBox.Show("修改了:" + nameUser);}}}
}
4.DataGridView 数据源
- DataGridView可以绑定不同类型的数据源,包括
DataTable
、List<T>
、BindingList<T>
等。 - 绑定到
List<T>
时,每个T
的实例对应DataGridView的一行。 DataBoundItem
属性返回当前行绑定的对象,例如,DataGridViewRow.DataBoundItem
将返回绑定列表中的相应对象。
绑定方式
- DataTable:
- 使用
DataTable
作为数据源时,每行数据通过DataRow
对象表示。 - 对于大量数据,DataTable可能是较好的选择,因为它内置了很多对数据操作的支持。
- 使用
- List:
- 当使用
List<T>
作为数据源时,数据以对象列表的形式存在。 - 对于处理实体对象集合,尤其是当数据量不大的情况下,
List<T>
是一个合适的选择。
- 当使用
优化建议
- 当数据量大时,推荐使用
DataTable
,因为它被设计用来处理大批量数据。 - 对于小量数据或者需要表示复杂对象时,
List<T>
更合适,因为它可以直接与对象的属性相绑定。 SqlDataReader
一次只读取一行数据,并且是只进的,适合大批量数据读取,但在Windows Forms中,直接将SqlDataReader
的数据转换为List<T>
后再绑定到DataGridView会更加灵活。
精彩推荐:
【C#进阶一】C#中的数组(Array)、集合(ArrayList,Queue,Stack, HashList)、List<T>、字典(Dictionary<K,T>)和双向链表LinkedList
【C#进阶八】C#中的序列化与反序列化下(二进制序列化、XML序列化及JSON序列化)
【C#进阶】C#语法中一些常用知识点总结
【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox
【WinForm详细教程三】WinForm中的NumericUpDown、PictureBox、RichTextBox及三种Timer控件
【WinForm详细教程四】WinForm中的ProgressBar 、ImageList和ListView控件
【WinForm详细教程五】WinForm中的MenuStrip 、ContextMenuStrip 、ToolStrip、StatusStrip控件
【WinForm详细教程六】WinForm中的GroupBox和Panel 、TabControl 、SplitContainer控件
【C#进阶】C#中的委托、事件、回调函数、匿名函数和lambda表达式
希望有所帮助,同时欢迎关注我,后面将更新更多相关内容!
相关文章:

【WinForm详细教程七】WinForm中的DataGridView控件
文章目录 1.主要属性DataSource行(Row 相关属性)列(Column 相关属性)单元格(Cell 相关属性)逻辑删除AllowUserToAddRowsAllowUserToDeleteRowsAllowUserToOrderColumns其他布局和行为属性 2.控件中的行、列…...

SpringCloudTencent(上)
SpringCloudTencent 1.PolarisMesh介绍2.北极星具备的功能3.北极星包含的组件4.功能特性1.服务管理1.服务注册2.服务发现3.健康检查 2.配置管理 5.代码实战1.环境准备2.服务注册与发现3.远程调用 1.PolarisMesh介绍 1.北极星是腾讯开源的服务治理平台,致力于解决分…...
linux硬盘挂载(linux 修改某个磁盘挂载到新目录)
文章目录 什么是硬盘挂载linux 修改某个磁盘挂载到新目录 什么是硬盘挂载 在Linux操作系统中,挂载硬盘是将硬盘的分区或者整个硬盘与文件系统关联起来,使得我们可以通过文件系统访问硬盘中的数据。 确认硬盘信息 sudo fdisk -l该命令会列出所有已连接…...
hdlbits系列verilog解答(always块case语句)-33
文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 Verilog 中的 case 语句几乎等同于 if-elseif-else 序列,该序列将一个表达式与其他表达式列表进行比较。它的语法和功能与 C 中的 switch 语句不同。 always @(*) begin // This is a combinational circuit …...

3D医学三维技术影像PACS系统源码
一、系统概述 3D医学影像PACS系统,它集影像存储服务器、影像诊断工作站及RIS报告系统于一身,主要有图像处理模块、影像数据管理模块、RIS报告模块、光盘存档模块、DICOM通讯模块、胶片打印输出等模块组成, 具有完善的影像数据库管理功能,强大…...

python 之softmx 函数
文章目录 总的介绍小应用 总的介绍 Softmax函数是一个常用的激活函数,通常用于多类别分类问题中。它将一个实数向量转换为概率分布。这个函数的输出是一个概率分布,表示输入样本属于每个可能类别的概率。 给定一个具有 (K) 个不同数值的实数向量 z (z1…...
第3章_基本select语句
文章目录 SQL概述SQL背景知识SQL分类 SQL语言的规则与规范SQL语言的规则SQL大小写规范注释命令规则(暂时了解)数据导入指令 基本的select语句select ...select ... from列的别名去除重复行空值参与运算着重号查询常数 显示表结构讲课代码课后练习 SQL概述…...
GPT3.5+文心一言+chatGLM 计算和代码生成能力简单对比
chatGLM3刚发布(10.27),打算尝试一下其code和计算能力。 共选取三个问题,难度从中等,偏困难,到困难。测试内容是正好手头上在做的事想让LLM来完成(偷懒),之前都是直接使…...
手搓一个ubuntu自动安装python3.9的sh脚本
#!/bin/bash# Step 1: 更新系统软件包 sudo apt update sudo apt upgrade -y sudo apt install -y software-properties-common# Step 2: 安装Python 3.9的依赖项 sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libread…...
volte使用方法 nodejs版本切换
Volta 一种轻松管理 JavaScript 命令行工具的方法。 文档 https://docs.volta.sh/guide/ 源码 https://github.com/volta-cli/volta 命令行 安装版本 此方法运行完会配置为默认版本 volta install node 安装最新版本的node volta install node14 安装指定版本的node volta i…...

Oracle安全基线检查
一、账户安全 1、禁止SYSDBA用户远程连接 用户具备数据库超级管理员(SYSDBA)权限的用户远程管理登录SYSDBA用户只能本地登录,不能远程。REMOTE_LOGIN_PASSWORDFILE函数的Value值为NONE。这意味着禁止共享口令文件,只能通过操作系统认证登录Oracle数据库。 1)检查REMOTE…...

@Slf4j将日志记录到磁盘和数据库
文章目录 1、背景介绍2、存本地2.1、配置文件2.2、使用 3、存数据库3.1、配置文件改造3.2、过滤器编写3.3、表准备3.4、添加依赖3.5、测试 4、优化4.1、日志定期删除 1、背景介绍 现在我一个SpringBoot项目想记录日志,大概可以分为下面这几种: 用户操作…...

2023年中国制糖行业研究报告
第一章 行业概况 1.1 定义 制糖行业是指以甘蔗、甜菜等为主要原料,通过一系列的工艺流程,生产糖以及相关副产品的产业。它是食品工业的重要组成部分,为人们日常生活中的甜蜜体验提供了必不可少的物质基础。 主要原料: 制糖行业…...

从使用的角度看 ByConity 和 ClickHouse 的差异
自 ClickHouse Inc 宣布其重要新功能仅在 ClickHouse Cloud 上开放以来,一些关注 ByConity 开源的社区小伙伴也来询问 ByConity 后续开源规划。为回答社区疑问,我们将之前分享的关于 ByConity 与 ClickHouse 相关功能对比的 webinar 整理为文章ÿ…...
Eureka处理流程
1、Eureka Server服务端会做什么 1、服务注册 Client服务提供者可以向Server注册服务,并且内部有二层缓存机制来维护整个注册表,注册表是Eureka Client的服务提供者注册进来的。 2、提供注册表 服务消费者用来获取注册表 3、同步状态 通过注册、心跳机制…...
排序算法
文章目录 P1271 【深基9.例1】选举学生会选择排序、冒泡排序、插入排序快速排序排序算法的应用[NOIP2006 普及组] 明明的随机数[NOIP2007 普及组] 奖学金P1781 宇宙总统 #mermaid-svg-Zo8AMme5IW1JlT6K {font-family:"trebuchet ms",verdana,arial,sans-serif;font-s…...
华为政企光传输网络产品集
产品类型产品型号产品说明 maintainProductEA5800-X15 典型配置 上行160G 下行64口GPON 16口XGS PONEA5800系列多业务接入设备定位为面向NG-PON的下一代OLT,基于分布式架构,运用虚拟接入技术,为用户提供宽带、无线、视频回传等多业务统一承…...
四路IC卡读卡器通信协议
1、摘要 Sle4442卡为256字节加密卡,存在读数据、写数据、保护数据以及密码操作。该卡在密码验证之前数据为只读状态,需要写入数据必须先进行密码验证,密码为3个字节,新卡初始密码为0xff,0xff,0xff。该读卡器…...
JavaFX作业
前言: 在写这个作业之前,尝试在JavaFX中添加全局快捷键,测试了大概5个小时,到处找教程换版本,结果最后还是没找到支持Java8以上的(也有可能是我自己的问题),最后只能退而求其次&…...

【使用Python编写游戏辅助工具】第五篇:打造交互式游戏工具界面:PySide6/PyQT高效构建GUI工具
前言 这里是【使用Python编写游戏辅助工具】的第五篇:打造交互式游戏工具界面:PySide6/PyQT高效构建GUI工具。本文主要介绍使用PySide6来实现构建GUI工具。 在前面,我们实现了两个实用的游戏辅助功能: 由键盘监听事件触发的鼠标连…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...