C# WinForms DataGridView 课程表实现详解
在C# WinForms开发中,利用DataGridView制作课程表是常见的UI展示需求。本教程将通过构建数据结构、模拟数据填充及最终绑定三个环节,演示如何将课程信息以表格形式直观呈现。
1. 构建课程表的数据结构
要显示课程表,首先需要建立一个与之匹配的数据容器。我们使用 System.Data.DataTable 来定义表头,确保其包含“节数”以及周一到周日共8列。
第一步:定义 DataTable 并设置列
创建一个名为 subject 的 DataTable,依次添加列名。第一列为行标题(如第1节),后续七列为星期名称。
DataTable dt = new DataTable("subject");
dt.Columns.Add("周数/节数", typeof(string));
dt.Columns.Add("周一", typeof(string));
dt.Columns.Add("周二", typeof(string));
dt.Columns.Add("周三", typeof(string));
dt.Columns.Add("周四", typeof(string));
dt.Columns.Add("周五", typeof(string));
dt.Columns.Add("周六", typeof(string));
dt.Columns.Add("周日", typeof(string));
第二步:初始化行数据
假设课程表有4节课,我们需要循环添加4行。每行的第一列标记为对应的节数,以便标识行内容。
// 循环添加4行数据
for (int i = 0; i < 4; i++)
{
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
}
// 填充行标题
for (int i = 0; i < 4; i++) {
dt.Rows[i][0] = $"第{i + 1}节";
}
此时,dt 已具备表格的基本骨架。

上图展示了最终的课程表效果:
2. 模拟数据填充过程
在实际应用中,数据通常来自数据库。为了演示方便,这里通过嵌套循环模拟查询数据库的过程,将课程、教师、教室等信息拼接后填入表格单元格。
第三步:遍历节数与星期进行数据绑定
- 外层循环
i代表节数索引(0-3)。 - 内层循环
j代表星期索引(1-7,对应周一到周日)。
for (int i = 0; i < 4; i++) // 循环所有节次
{
for (int j = 1; j < 8; j++) // 循环每一天
{
int num = i + 1;
int week = j;
// 注意:实际项目中应替换为真实的 SQL 连接字符串和参数化查询
string sql = $"SELECT subject, teacher, room FROM course_table WHERE num='{num}' AND week = '{week}'";
// 模拟数据获取(此处省略数据库连接代码)
// 假设 reader.Read() 返回数据
string sum = "语文\n张老师\n101室";
// 将组合后的字符串存入 DataTable
dt.Rows[i][j] = sum;
}
}
这一阶段完成后,DataTable 的每一格都包含了具体的课程信息。

上图展示了模拟数据库中的课程表样式:
3. 将数据绑定至 DataGridView
最后一步是将准备好的 DataTable 数据源分配给界面上的 DataGridView 控件,即可自动生成可视化的表格。
this.DataGridView.DataSource = dt;
完成以上三步,一个基础的 C# WinForms 课程表界面就搭建完成了。通过调整 DataGridView 的属性(如列宽、对齐方式、背景色等),可以进一步优化排版美观度。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













