C#学习之DataGridView控件

目录

一、DataGridView控件常用属性、方法、事件汇总表

1. 常用方法、属性和事件汇总

二、DataGridView 控件的常用方法调用

1. DataBind() 方法

2. Clear() 方法

3. Refresh() 方法

4. Sort() 方法

5. ClearSelection() 方法

6. BeginEdit() 方法

7. EndEdit() 方法

8. CommitEdit() 方法

9. CancelEdit() 方法

10. SelectAll() 方法

11. GetCellCount() 方法

12. GetColumnCount() 方法

13. GetRowCount() 方法

14. HitTest() 方法

15. AutoResizeColumns() 方法

16. AutoResizeRows() 方法

17. Add() 方法

18. Remove() 方法

19. Insert() 方法

20. Copy() 方法

21. Paste() 方法

22. Find() 方法

23. ScrollIntoView() 方法

24. InvalidateCell() 方法

25. InvalidateRow() 方法

26. InvalidateColumn() 方法

27. Update() 方法

28. Dispose() 方法

29. Show() 和 Hide() 方法

30. BringToFront() 和 SendToBack() 方法

三、DataTable作为DataGridView的数据源示例

1、代码示例:

2. 代码说明

3.总结


一、DataGridView控件常用属性、方法、事件汇总表

DataGridView 是 Windows Forms 中用于显示和编辑表格数据的强大控件。以下是一些常用的方法、属性和事件的汇总。

1. 常用方法、属性和事件汇总

类型名称描述
属性DataSource获取或设置 DataGridView 的数据源。
Columns获取控件中所有列的集合。
Rows获取控件中所有行的集合。
CurrentCell获取或设置当前活动的单元格。
ReadOnly获取或设置一个值,指示用户是否可以编辑控件的单元格。
AllowUserToAddRows获取或设置一个值,指示是否向用户显示添加行的选项。
AllowUserToDeleteRows获取或设置一个值,指示用户是否可以从控件中删除行。
SelectionMode获取或设置一个值,指示如何选择单元格。
MultiSelect获取或设置一个值,指示是否允许用户一次选择多个单元格、行或列。
方法Refresh()强制控件使其工作区无效并立即重绘自己和任何子控件。
ClearSelection()取消选择所有选定的单元格。
Sort()对 DataGridView 的内容进行排序。
BeginEdit()将当前的单元格置于编辑模式。
EndEdit()提交对当前单元格的编辑并结束编辑操作。
事件CellClick在单元格的任何部分被单击时发生。
CellValueChanged在单元格的值更改时发生。
RowEnter在行接收到输入焦点时发生。
RowLeave在行失去输入焦点时发生。
SelectionChanged在当前选择更改时发生。

二、DataGridView 控件的常用方法调用

以下是 DataGridView 控件的各种常用方法的调用过程。

1. DataBind() 方法

将数据源绑定到 DataGridView

// 创建 DataTable
DataTable dataTable = new DataTable();
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));// 添加数据
dataTable.Rows.Add(1, "Alice", 23);
dataTable.Rows.Add(2, "Bob", 30);
dataTable.Rows.Add(3, "Charlie", 25);// 绑定数据源
dataGridView1.DataSource = dataTable;

2. Clear() 方法

清除 DataGridView 中的所有行和列。

dataGridView1.Clear();

3. Refresh() 方法

刷新 DataGridView,使其重新绘制并显示最新的数据。

dataGridView1.Refresh();

4. Sort() 方法

对 DataGridView 中的列进行排序。

// 按 Name 列升序排序
dataGridView1.Sort(dataGridView1.Columns["Name"], ListSortDirection.Ascending);

5. ClearSelection() 方法

取消所有选中的单元格、行或列。

dataGridView1.ClearSelection();

6. BeginEdit() 方法

将当前单元格置于编辑模式。

// 将第一行第一列的单元格置于编辑模式
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
dataGridView1.BeginEdit(true);

7. EndEdit() 方法

结束当前单元格的编辑并提交更改。

dataGridView1.EndEdit();

8. CommitEdit() 方法

提交当前单元格的编辑并应用更改。

dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);

9. CancelEdit() 方法

取消当前单元格的编辑并丢弃更改。

dataGridView1.CancelEdit();

10. SelectAll() 方法

选择 DataGridView 中的所有单元格。

dataGridView1.SelectAll();

11. GetCellCount() 方法

获取满足指定状态的单元格数量。

int selectedCellCount = dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
MessageBox.Show("Selected cells: " + selectedCellCount);

12. GetColumnCount() 方法

获取满足指定状态的列的数量。

int visibleColumnCount = dataGridView1.GetColumnCount(DataGridViewElementStates.Visible);
MessageBox.Show("Visible columns: " + visibleColumnCount);

13. GetRowCount() 方法

获取满足指定状态的行数。

int selectedRowCount = dataGridView1.GetRowCount(DataGridViewElementStates.Selected);
MessageBox.Show("Selected rows: " + selectedRowCount);

14. HitTest() 方法

获取鼠标点击位置的单元格信息。

private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{var hitTestInfo = dataGridView1.HitTest(e.X, e.Y);MessageBox.Show($"Row: {hitTestInfo.RowIndex}, Column: {hitTestInfo.ColumnIndex}");
}

15. AutoResizeColumns() 方法

自动调整列的宽度以适应内容。

dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

16. AutoResizeRows() 方法

自动调整行的高度以适应内容。

dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);

17. Add() 方法

动态添加列或行。

// 添加列
dataGridView1.Columns.Add("NewColumn", "New Column");// 添加行
dataGridView1.Rows.Add(4, "David", 28);

18. Remove() 方法

动态删除列或行。

// 删除列
dataGridView1.Columns.Remove("NewColumn");// 删除行
dataGridView1.Rows.RemoveAt(0); // 删除第一行

19. Insert() 方法

在指定位置插入行。

// 在第二行插入新行
dataGridView1.Rows.Insert(1, 5, "Eva", 22);

20. Copy() 方法

将选中的单元格内容复制到剪贴板。

dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
dataGridView1.SelectAll();
dataGridView1.Copy();

21. Paste() 方法

将剪贴板中的内容粘贴到选中的单元格。

dataGridView1.Paste();

22. Find() 方法

查找指定列中匹配值的行。

int rowIndex = -1;
foreach (DataGridViewRow row in dataGridView1.Rows)
{if (row.Cells["Name"].Value.ToString() == "Bob"){rowIndex = row.Index;break;}
}
if (rowIndex != -1)
{MessageBox.Show("Found Bob at row: " + rowIndex);
}

23. ScrollIntoView() 方法

滚动到指定的单元格。

dataGridView1.ScrollIntoView(dataGridView1.Rows[5].Cells[0]);

24. InvalidateCell() 方法

使指定单元格无效并强制重绘。

dataGridView1.InvalidateCell(0, 0); // 使第一行第一列的单元格无效

25. InvalidateRow() 方法

使指定行无效并强制重绘。

dataGridView1.InvalidateRow(0); // 使第一行无效

26. InvalidateColumn() 方法

使指定列无效并强制重绘。

dataGridView1.InvalidateColumn(0); // 使第一列无效

27. Update() 方法

强制重绘控件。

dataGridView1.Update();

28. Dispose() 方法

释放 DataGridView 占用的资源。

dataGridView1.Dispose();

29. Show() 和 Hide() 方法

显示或隐藏 DataGridView

dataGridView1.Show(); // 显示
dataGridView1.Hide(); // 隐藏

30. BringToFront() 和 SendToBack() 方法

调整 DataGridView 的 Z 轴顺序。

dataGridView1.BringToFront(); // 置顶
dataGridView1.SendToBack();   // 置底

三、DataTable作为DataGridView的数据源示例

1、代码示例:

将 DataTable 作为数据源赋值给 DataGridView 控件

using System;
using System.Data;
using System.Windows.Forms;namespace DataGridViewExample
{public partial class Form1 : Form{public Form1(){InitializeComponent();// 创建 DataTableDataTable dataTable = new DataTable();// 添加列dataTable.Columns.Add("ID", typeof(int));dataTable.Columns.Add("Name", typeof(string));dataTable.Columns.Add("Age", typeof(int));// 添加行dataTable.Rows.Add(1, "Alice", 23);dataTable.Rows.Add(2, "Bob", 30);dataTable.Rows.Add(3, "Charlie", 25);// 将 DataTable 赋值给 DataGridView 的数据源dataGridView1.DataSource = dataTable;// 设置 DataGridView 属性dataGridView1.ReadOnly = true; // 设置为只读dataGridView1.AllowUserToAddRows = false; // 禁止用户添加行dataGridView1.AllowUserToDeleteRows = false; // 禁止用户删除行dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; // 设置选择模式为整行选择dataGridView1.MultiSelect = false; // 禁止多选}private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){// 处理单元格点击事件if (e.RowIndex >= 0){DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];MessageBox.Show("You clicked on: " + row.Cells["Name"].Value.ToString());}}}
}

2. 代码说明

  • DataTable 创建:首先创建了一个 DataTable 对象,并添加了三列(ID、Name、Age)。

  • 添加数据:通过 Rows.Add 方法向 DataTable 中添加了三行数据。

  • 绑定数据源:将 DataTable 赋值给 DataGridView 的 DataSource 属性,这样数据就会显示在 DataGridView 中。

  • 设置属性:设置了 DataGridView 的一些常用属性,如 ReadOnlyAllowUserToAddRowsSelectionMode 等。

  • 事件处理:处理了 CellClick 事件,当用户点击某个单元格时,会弹出一个消息框显示该行的 Name 列的值。

3.总结

通过以上代码示例,可以轻松地将 DataTable 作为数据源绑定到 DataGridView 控件,并通过设置属性和处理事件来实现更复杂的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/895725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地事务简介

本地事务简介 1 事务基本性质 数据库事务的几个特性:原子性(Automicity)、一致性(Consistency)、隔离性或独立性(islation)和持久性(Durability),简称ACID。 原子性:一系列的操作,其整体不可拆分,要么同时成功&#…

PyQt组态软件 拖拽设计界面测试

PyQt组态软件测试 最近在研究PyQt,尝试写个拖拽设计界面的组态软件,目前实现的功能如下: 支持拖入控件,鼠标拖动控件位置 拖动控件边缘修改控件大小支持属性编辑器,修改当前选中控件的属性 拖动框选控件,点选控件 控…

软件评测师复习之计算机网络(4)

目录 (一)1.网络功能和分类2.OSI七层模型3.TCP/IP协议4.传输介质(二)1.通信方式和交换方式2.IP地址3.IPv64.网络规划与设计5.磁盘冗余阵列6.网络存储技术(一) 1.网络功能和分类 计算机网络功能:数据通信、资源共享、负载均衡、高可靠性 按分布范围和拓扑结构划分: 网络分类…

机器学习-1:线性回归

常用的线性回归模型主要有以下这些 简单线性回归多元线性回归多项式回归岭回归套索回归弹性网络回归逐步回归 一.简单的一元线性回归 1.导入必备的库 #导入必备的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection …

SQL SERVER的PARTITION BY应用场景

SQL SERVER的PARTITION BY关键字说明介绍 PARTITION BY关键字介绍具体使用场景排名计算累计求和分组求最值分组内百分比计算分组内移动平均计算分组内数据分布统计分组内数据偏移计算 总结 PARTITION BY关键字介绍 在SQL SERVER中,关键字PARTITION BY主要用于窗口函…

NO.18十六届蓝桥杯备战|循环嵌套|乘法表|斐波那契|质数|水仙花数|(C++)

循环嵌套 循环嵌套的使⽤ while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决问题,就是我们所说的:循环嵌套。这三种循环都可以任意嵌套使⽤ ⽐如: 写⼀个代码,打印⼀个乘法⼝…

leetcode - hot100 - python - 专题一:哈希

1、两数之和 简单 题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可…

JavaEE-SpringBoot快速入门

文章目录 本节目标Maven什么是Maven创建一个Maven项目maven项目功能maven的依赖管理全球仓库, 私服, 本地服务器, 配置国内镜像 第一个SpringBoot项目创建项目运行SpringBoot程序 SpringBoot原理初步Web服务器 总结 本节目标 了解什么是maven, 配置国内源使用Springboot创建项…

【Viper】配置格式与支持的数据源与go案例

Viper 是一个用于 Go 应用程序的配置管理库,支持多种配置格式和数据源。 安装依赖 go get github.com/spf13/viper go get github.com/spf13/viper/remote go get go.etcd.io/etcd/client/v3"github.com/spf13/viper/remote"要写在etcd客户端import里 1…

【C/C++】后缀表达式 蓝桥杯/ACM备赛

核心考点:1.栈的应用 2.字符串处理 题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的…

【AI实践】deepseek支持升级git

当前Windows 11 WSL的git是2.17,Android Studio提示需要升级到2.19版本 网上找到指导文章 安装git 2.19.2 cd /usr/src wget https://www.kernel.org/pub/software/scm/git/git-2.19.2.tar.gz tar xzf git-2.19.2.tar.gz cd git-2.19.2 make prefix/usr/l…

QEMU 搭建 Ubuntu x86 虚拟机

1. 安装 QEMU 在 Ubuntu 系统中,可以通过以下命令安装 QEMU: sudo apt-get update sudo apt-get install qemu-system-x86_64 qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager2. 创建虚拟硬盘镜像 qemu-img create -f raw ubuntu…

Linux驱动层学习:Linux 设备树

设备树是一种数据结构,包含多个节点,用于描述硬件设备及其配置信息,它通常用于嵌入式系统中,尤其是在Linux操作系统中,帮助操作系统识别和管理硬件资源,设备树不是代码,而是一种用数据描述硬件信…

金蝶云星空与钉钉高效数据集成案例分享

金蝶云星空数据集成到钉钉的技术案例分享 在企业信息化系统中,数据的高效流动和实时反馈是提升业务效率的关键。本文将聚焦于一个具体的系统对接集成案例:如何将金蝶云星空的数据集成到钉钉,并实现审核状态的回传提示。 本次集成方案名为“…

图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介

1.Skia —— 2D 图形库 Skia 是一个 2D 图形库,它的作用是为开发者提供一个高层次的绘图接口,方便他们进行 2D 图形渲染(比如绘制文本、形状、图像等)。Skia 本身不直接管理 GPU 或进行底层的渲染工作,而是通过 底层图…

GIT提错分支,回滚提交

1. 准备示例 假设我们有三次提交: test1:需要在 master 分支提交test2、test3:需要在 develop 分支提交 远端线上记录 2. 步骤 选择需要回退的记录: 选中需要回退的 commit,选择 Reset Current Branch to Here...。…

【原创】在ubuntu中搭建gradle开发环境

检查Linux版本 rootwww:~# hostnamectlStatic hostname: www.0x88.comIcon name: computer-vmChassis: vmMachine ID: 30fa955a36be492ca459599ef20bc508Boot ID: 37084dbe36f44adaa075e8f9a98f132eVirtualization: kvm Operating System: Ubuntu 22.04.5 LTSKernel: Linux 5.…

【JavaEE进阶】MyBatis入门

目录 🌴前言 🌲什么是MyBatis? 🌳准备工作 🚩创建工程 🚩配置数据库连接字符串 🚩数据准备 🚩编写持久层代码 🍃单元测试 🌴前言 在应⽤分层学习时,我们了解到…

以太网详解(八)传输层协议:TCP/UDP 协议

文章目录 传输层协议概述为什么需要传输层?传输层功能网络层与传输层在实现 “端到端” 传输的异同两类服务:面向连接/无连接服务 传输控制协议 TCPTCP 协议数据单元格式TCP 的重传机制快重传和快恢复快重传举例快恢复算法 用户数据报协议 UDPUDP 概述UDP 基本工作过…

Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档

Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档 本文将对七个流行的定时任务调度库:node-cron、rxjs、bull、node-schedule、agenda、bree、cron。这些库都可以用来处理定时任务,但它们的特点和适用场景有所不同。我们将从…