前言
WinForm 桌面应用程序开发中,DataGridView 是一个非常常用且功能强大的控件,用于以表格形式展示和操作数据。
不管是显示数据库查询结果、用户输入表单,还是实现复杂的数据交互逻辑,DataGridView 都能胜任。
本文将从基础入手,结合完整代码示例,详细讲解如何在 Winform 应用程序中使用 DataGridView 控件,包括手动添加数据、绑定数据源、设置样式与事件处理等,帮助开发者快速掌握其使用方法。
正文
一、什么是 DataGridView?
DataGridView 是 .NET Framework 提供的一个用于显示表格数据的控件,它支持多种数据源(如 DataTable、List、DataSet 等),并允许用户进行排序、编辑、选择等操作。
它由以下基本元素组成:
-
行(Rows)
-
列(Columns)
-
单元格(Cells)
通过这些元素,开发者可以灵活地构建各种数据展示界面。
二、DataGridView 的基本使用
1、创建 DataGridView 控件
可以在 Visual Studio 的设计器中直接拖放 DataGridView 控件到窗体上,也可以通过代码动态创建:
private DataGridView dataGridView1;
private void InitializeDataGridView()
{
dataGridView1 = new DataGridView();
this.Controls.Add(dataGridView1);
dataGridView1.Dock = DockStyle.Fill; // 填充整个窗体
}
2、手动添加列和数据
可以通过 Columns.Add() 方法添加列,并通过 Rows.Add() 添加数据行:
private void PopulateDataGridView()
{
dataGridView1.Columns.Add("ID", "编号");
dataGridView1.Columns.Add("Name", "姓名");
dataGridView1.Columns.Add("Age", "年龄");
dataGridView1.Rows.Add(1, "张三", 25);
dataGridView1.Rows.Add(2, "李四", 30);
}
3、数据绑定方式
更常见的是使用数据绑定的方式加载数据,比如从数据库获取 DataTable 并绑定到 DataGridView:
private void BindDataGridView()
{
DataTable dt = GetDataFromDatabase();
dataGridView1.DataSource = dt;
if (dataGridView1.Columns.Count >= 3)
{
dataGridView1.Columns[0].HeaderText = "编号";
dataGridView1.Columns[1].HeaderText = "姓名";
dataGridView1.Columns[2].HeaderText = "年龄";
}
}
private DataTable GetDataFromDatabase()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));
dt.Rows.Add(1, "张三", 25);
dt.Rows.Add(2, "李四", 30);
dt.Rows.Add(3, "王五", 28);
dt.Rows.Add(4, "赵六", 35);
dt.Rows.Add(5, "小明", 22);
return dt;
}
完整的使用示例如下:
using System.Data;
namespace AppDataGrid
{
public partial class Form1 : Form
{
private DataGridView dataGridView1 = new DataGridView();
public Form1()
{
InitializeComponent();
InitializeDataGridView();
//PopulateDataGridView(); // 手动添加数据
BindDataGridView(); // 使用数据绑定
}
private void InitializeDataGridView()
{
dataGridView1.Dock = DockStyle.Fill;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AllowUserToDeleteRows = false;
dataGridView1.ReadOnly = true;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
this.Controls.Add(dataGridView1);
}
private void PopulateDataGridView()
{
dataGridView1.Columns.Add("ID", "编号");
dataGridView1.Columns.Add("Name", "姓名");
dataGridView1.Columns.Add("Age", "年龄");
dataGridView1.Rows.Add(1, "张三", 25);
dataGridView1.Rows.Add(2, "李四", 30);
dataGridView1.Rows.Add(3, "王五", 28);
dataGridView1.Rows.Add(4, "赵六", 35);
}
private void BindDataGridView()
{
DataTable dt = GetDataFromDatabase();
dataGridView1.DataSource = dt;
if (dataGridView1.Columns.Count >= 3)
{
dataGridView1.Columns[0].HeaderText = "编号";
dataGridView1.Columns[1].HeaderText = "姓名";
dataGridView1.Columns[2].HeaderText = "年龄";
}
}
private DataTable GetDataFromDatabase()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));
dt.Rows.Add(1, "张三", 25);
dt.Rows.Add(2, "李四", 30);
dt.Rows.Add(3, "王五", 28);
dt.Rows.Add(4, "赵六", 35);
dt.Rows.Add(5, "小明", 22);
return dt;
}
}
}
三、常用属性与事件
1、属性设置
dataGridView1.AllowUserToAddRows = false; // 禁止用户添加行
dataGridView1.ReadOnly = true; // 设置为只读
dataGridView1.MultiSelect = false; // 禁止多选
2、事件处理
常用的事件包括单元格点击、行选择、数据更新等:
private void DataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
string cellValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
MessageBox.Show($"您点击了:{cellValue}");
}
}
四、高级功能
1、自定义列类型
可以添加复选框列来实现多选功能:
DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.HeaderText = "选择";
dataGridView1.Columns.Add(checkColumn);
2、格式化显示
对日期、数字等字段进行格式化输出:
dataGridView1.Columns["DateColumn"].DefaultCellStyle.Format = "yyyy-MM-dd";
五、性能优化建议
1、大数据量时使用虚拟模式(Virtual Mode)
避免一次性加载大量数据,提升响应速度。
2、避免在 CellPainting 等绘制事件中执行复杂逻辑
绘制事件频繁触发,应保持轻量级处理。
3、优先使用数据绑定而非逐行添加
数据绑定效率更高,维护也更方便。
总结
DataGridView 是 C# Winform 开发中最实用的数据展示控件之一。它不仅支持丰富的数据显示方式,还提供了强大的交互功能,如数据绑定、自定义列、事件处理等。
通过本文的介绍和完整代码示例,开发者可以快速掌握 DataGridView 的基本使用技巧,并进一步探索其高级功能,从而构建出专业、高效的数据管理界面。
无论你是初学者还是有一定经验的开发者,掌握 DataGridView 的使用都将极大提升你的 Winform 开发能力。希望本文对你有所帮助!
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!
作者:技术老小子
出处:mp.weixin.qq.com/s/kuDFrELtzu5_v56d-llTKQ
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!