C# DataGridView控件的基础应用实例

article/2025/11/1 5:21:16

目录

    • 引言
    • 一、界面简介
    • 二、初始化
    • 三、添加一行数据
    • 四、允许修改表格
    • 五、复制选择的数据
    • 六、复制所有数据
    • 七、读一行数据
    • 八、读所有数据
    • 九、查找名字记录
    • 十、删除一行数据
    • 十一、删除多行数据
    • 十二、清除所有行
    • 十三、删除所有列
    • 十四、其它:选中单元格
    • 十五、最后

引言

  DataGridView我把他叫做网格数据控件 。我们在显示表格数据的时候,经常会用想到用它, 他就像Excel表格一样。我们知道只要是数据表,就一定逃不掉表的增删查改操作。
  该篇,我在VS2019的环境下通过demo实例来实现DataGridView控件的一系列功能,包括添加一行数据、切换允许修改单元格、复制选择数据、复制所有数据、读一行数据、读取所有数据、查找记录、删除一行数据、删除一行数据、删除多行数据、清除所有行以及清除所有列。


一、界面简介

  我新建了一个Form窗体。左上角最大的控件就是DataGridView,将demo功能定义到按键的单击事件中,另外添加了 一个文本框textBox和两个下拉菜单comBox来输入姓名、性别和班级。富文本框用来输出部分功能的输出使用。请见下图。
在这里插入图片描述


二、初始化

  初始化包括参数初始化和表头初始化。
  (1)参数初始化可以使用代码修改,也可以通过属性栏修改默认值,属性比较多,可以自己去尝试,下面我只举几个用代码控制的例子。
  (2)表头初始化的目的是添加列,没有列是无法添加对应的行数据的,我们可以不用规定列的宽度和表头内容,但是必须定义列数量,dataGridView.Columns.Add(new DataGridViewTextBoxColumn())就只实现这个功能的。如实例中,我们就添加了4个列。

        private void InitDataGridView (){//根据Header和所有单元格的内容自动调整行的高度dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;//设置内容对齐方式和字体 dataGridView.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;            //dataGridView_Report.Font = new Font("宋体", 10);//设置所有单元格都不可编辑dataGridView.ReadOnly = true;//设置标题头列宽dataGridView.RowHeadersWidth = 15; //不可以增加空行dataGridView.AllowUserToAddRows = false;   //添加表头for (int i = 0; i < 4; i++){dataGridView.Columns.Add(new DataGridViewTextBoxColumn());}//指定标题列宽dataGridView.Columns[0].Width = 60;dataGridView.Columns[1].Width = 100;dataGridView.Columns[2].Width = 80;dataGridView.Columns[3].Width = 150;//添加标题字符dataGridView.Columns[0].HeaderText = "序号";dataGridView.Columns[1].HeaderText = "姓名";dataGridView.Columns[2].HeaderText = "性别";dataGridView.Columns[3].HeaderText = "班级";}

三、添加一行数据

  添加一行数据,首先,要明确你要在表格的哪个位置添加几行数据,否则,无法知道往什么位置insert多少个数据。其次,必须清楚每一列的数据类型,一一对应才可以写对数据。另外,ClearSelection()方法可以去除默认的选择,防止始终有选择的焦点在控件上,可以让界面清静一点。

		private void button_add_Click(object sender, EventArgs e){//排除异常输入if(textBox_Name.Text == string.Empty || comboBox_Sex.Text ==string.Empty|| comboBox_Class.Text == string.Empty){return;}//得到总行数 int num = dataGridView.Rows.Count; //向第一行插入一行数据this.dataGridView.Rows.Insert(0, 1);//写第一行第二列数据//插入名字this.dataGridView.Rows[0].Cells[1].Value = textBox_Name.Text;//写第一行第三列数据//插入性别this.dataGridView.Rows[0].Cells[2].Value = comboBox_Sex.Text;//写第一行第四列数据//插入班级this.dataGridView.Rows[0].Cells[3].Value = comboBox_Class.Text;//写第所有行第一列数据//插入显示序号for (int i = 0; i < num + 1; i++){this.dataGridView.Rows[i].Cells[0].Value = i + 1;}//去除选择dataGridView.ClearSelection();}

四、允许修改表格

  允许修改表格是由属性ReadOnly决定的。因此,非常容易改变和修改。实例中用CheckBox的改变事件来控制属性的true 或false。

   private void checkBox_Modify_CheckedChanged(object sender, EventArgs e){if(checkBox_Modify.Checked == true)dataGridView.ReadOnly = false;elsedataGridView.ReadOnly = true;}

五、复制选择的数据

  DataGridView控件是可以允许选择一个单元格或者多个单元格,跨行的单元格,我们通过
选择后,背景色将变成默认的蓝色。我们注意要先排除没有被选择的情况。这里的Clipboard.SetDataObject()方法,和Ctrl+C的功能是一样的。我们就可以利用这个省去用户键盘操作。

private void button_Copy_Click(object sender, EventArgs e){//排除异常if (dataGridView.CurrentCell == null)return;//单元格格式化内容复制到粘贴板Clipboard.SetDataObject(dataGridView.GetClipboardContent());             }

六、复制所有数据

  复制所有数据和复制指定数据一样,只是我们可以将控件的所有数据自动全选上。再直接拷贝到粘贴板。简直不要太简单。

        private void button_SelectAll_Click(object sender, EventArgs e){dataGridView.SelectAll();//单元格格式化内容复制到粘贴板Clipboard.SetDataObject(dataGridView.GetClipboardContent());}

七、读一行数据

  读一行数据,前提条件是需要首先选择好一行数据的,点击每行的最左边就可以选择整行数据的,否者我们就不执行后面的操作。
  获取选择的索引后将数据按照整列的数据逐一拷贝到数组中,最后显示。当然也可以不使用逐一读取,通过数据复制的方法将数据格式化数据送到粘贴板后再进行操作。
  如果选择了多行,甚至是跨行多行,索引Index则是指向最后一个行,所以,代码将复制最后的那一行。

        private void button_Read_Click(object sender, EventArgs e){//判断是否选中一行if (dataGridView.SelectedRows.Count == 0)return;//获取选择的索引int index = dataGridView.CurrentRow.Index;string line = "";for (int i = 1; i < dataGridView.ColumnCount; i++){line += dataGridView.Rows[index].Cells[i].Value.ToString();if (i == dataGridView.ColumnCount - 1)line += "\n";}//显示在富文本中display_in_richTextBox(line);}

八、读所有数据

  读取所有数据和复制所有数据有点类似,这里直接使用两个for循环将每个单元格的数据格式化输出连接到字符串中。

    	private void button_ReadAll_Click(object sender, EventArgs e){            string all_data = "";for(int i = 0; i < dataGridView.Rows.Count; i++)//行循环{for (int j = 0; j < dataGridView.ColumnCount; j++) //列循环{  all_data += dataGridView.Rows[i].Cells[j].Value.ToString();if (j == dataGridView.ColumnCount - 1)all_data += "\n";elseall_data += "\t";}                }//显示数据display_in_richTextBox(all_data); }

九、查找名字记录

  查找某个列的记录中是否有对应的数据存在,这里我按照顺序的方法直接找到对应数据,并将焦点跳到搜索到的位置。查找的算法方法很多,还可以多次查找,模糊查找、这里只是为了说明控件实现,就不使用其它方法来复杂代码了。

        //位置定义int position = 0;private void button_Search_Click(object sender, EventArgs e){//获取行数int Count = dataGridView.Rows.Count;//得到的要搜索的内容string find_name = textBox_Name.Text;//循环搜读对比for (int i = position; i < Count; i++){   if (find_name == dataGridView.Rows[i].Cells[1].Value.ToString())//对比{//选择指定单元格dataGridView.CurrentCell = dataGridView.Rows[i].Cells[1];//返回return;} }//没有找到}

十、删除一行数据

  删除一行数据同样是需要先规定是选中了至少有1行以上,删除行才有意义。
  如果选择了多行,甚至是跨行多行,索引Index则是指向最后一个行,因此这种情况,代码将删除最后的那一行。

  		private void button_Delete_Click(object sender, EventArgs e){//判断是否选中一行if (dataGridView.SelectedRows.Count == 0)return;//删除一行dataGridView.Rows.RemoveAt(dataGridView.CurrentRow.Index);}

十一、删除多行数据

   SelectedRows是获取用户选定的行的集合。通过选择集合的循环,可以逐个删除(remove)掉对应的所有行(row)。感觉这个方法还是非常快捷的。

        private void button_DeleteMultRow_Click(object sender, EventArgs e){foreach (DataGridViewRow row in dataGridView.SelectedRows){if (!row.IsNewRow){dataGridView.Rows.Remove(row);}}}

十二、清除所有行

   清除所有行的方法 Rows.Clear()是我们需要清除所有数据时使用的,清除后表头是不会删除的。

 	    private void button_Clear_Click(object sender, EventArgs e){//删除所有行dataGridView.Rows.Clear();}

十三、删除所有列

   清除所有列的方法Columns.Clear() 是我们需要清除所有数据和表头时使用的,清除后表头会删除掉的,也就是没有了列,要重新添加数据时需要初始化列才可以的。

  	private void button_ClearColumns_Click(object sender, EventArgs e){//删除包括标题在内的所有列dataGridView.Columns.Clear();} 

十四、其它:选中单元格

   下面实例实现的是指定选中第0行第1列。此单元格将高亮。

dataGridView.CurrentCell = dataGridView.Rows[0].Cells[1];

十五、最后

   上面讲到的是我平时有用到的DataGridView控件的方法,抽空用demo工程实现和描述了一遍,时间有限,如有描述的不够明白的,朋友们都可以与我讨论和指正。


http://chatgpt.dhexx.cn/article/pgTlQ3h6.shtml

相关文章

基于用户的协同过滤个性化音乐推荐系统毕业设计

基于用户的协同过滤个性化音乐推荐系统 摘 要 互联网发展到如今已经完完全全的改变了的生活方式&#xff0c;融入了日常生活&#xff0c;包括交流&#xff0c;出行&#xff0c;消费&#xff0c;娱乐等。与此同时&#xff0c;音乐数据也在与日俱增的变化着。用户在访问一个…

基于深度学习的音乐推荐系统

♚ 作者&#xff1a;沂水寒城&#xff0c;CSDN博客专家&#xff0c;个人研究方向&#xff1a;机器学习、深度学习、NLP、CV Blog: http://yishuihancheng.blog.csdn.net 推荐系统在我们日常生活中发挥着非常重要的作用&#xff0c;相信实际从事过推荐相关的工程项目的人或多或少…

(附源码)计算机毕业设计SSM基于java的音乐推荐系统

&#xff08;附源码&#xff09;计算机毕业设计SSM基于java的音乐推荐系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

【计算机毕业设计】Java基于协同过滤算法的音乐推荐系统

毕设帮助、开题指导、源码交流&#xff0c;联系方式见文末。。 音乐检索系统的开发目的是使音乐检索模式转变成信息管理&#xff0c;为音乐检索人员提供方便条件。对音乐检索的实际情况进行调研之后&#xff0c;进行详细的需求分析&#xff0c;对现有的管理模式进行改进&#x…

java基于springboot+vue协同过滤算法的音乐推荐系统

音乐是人类永恒的话题&#xff0c;无论是在古代还是现代人们对音乐都有一种非常的热爱在里面&#xff0c;同时音乐也寄语了人们对美好事物的憧憬&#xff0c;很多时候人们在试听音乐的时候并不能够及时的找到适合自己的音乐&#xff0c;而且当下很多音乐都是收费的&#xff0c;…

[附源码]java毕业设计网易云音乐推荐系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于python的音乐推荐系统

基于python的音乐推荐系统 算法:基于用户的协同过滤推荐算法 语言:python 数据库:sqlite 框架:django 编号:8448648225698568爱喝可乐的大学生

SpringBoot+Vue项目个性化音乐推荐系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springbootvue Node&#xff1a;node.js JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/idea,Visual Maven包…

如何使用Python实现音乐推荐系统

如何使用Python实现音乐推荐系统 在我的大学三年中&#xff0c;我最大的技术难题之一是如何使用Python实现音乐推荐系统。音乐推荐系统是基于用户听歌历史、用户喜好和音乐特征等因素&#xff0c;为用户推荐最合适的音乐。在这篇博客中&#xff0c;我将分享我是如何使用Python…

动手写简单的音乐推荐系统

简单音乐推荐系统的设计与实现 本文提供两种简单的传统音乐推荐系统&#xff08;next-songs 方向&#xff09;的思路与实现。&#xff08;数学原理和机器学习方法从略&#xff09; 下文仅给出思路以及关键代码&#xff0c;完整代码实现见: https://github.com/cdfmlr/murecom…

基于hadoop大数据的音乐推荐系统

1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目&#xff0c;基于hadoop大数据的音乐推荐系统。 1.4 Hadoop优势&#xff08;4高&#xff09; 1.5 Hadoop 组成&#xff08;面试重点&#xff09; 1.5.1 HDFS 架构概述 Hadoop Distributed File System &#xff0c;简…

python音乐推荐系统_音乐推荐系统

音乐频道推荐业务,支持各个产品业务和策略。这里我先使用CB+CF+LR实现推荐部分,下面具体展开: 一、推荐系统流程图 CB,CF算法在召回阶段使用,推荐出来的item是粗排的,利用LR算法,可以将CB,CF召回来的item进行精排,然后选择分数最高,给用户推荐出来。后续我们可以采用…

(附源码)计算机毕业设计SSM音乐推荐系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

音乐推荐系统设计

文章目录 问题描述如何解决系统设计评测指标推荐系统的用户画像运动音乐场景用户行为分析睡眠音乐场景用户行为分析治愈音乐场景用户行为分析其他音乐场景用户行为分析 问题描述 移动网络和数字多媒体技术的飞速发展促进了数字音乐产业的共享与广泛传播&#xff0e;对用户而言…

音乐推荐系统(协同过滤和SVD)

python音乐推荐系统 首先对音乐数据集进行数据清洗和特征提取&#xff0c;基于矩阵分解方式来进行音乐推荐。 直接上源码和数据集文件 链接&#xff1a;https://pan.baidu.com/s/1Q45-pTRgXcQ4H-Z2WsRbVQ?pwd55z0 提取码&#xff1a;55z0音乐数据处理 读取音乐数据集&#x…

基于深度学习的音乐推荐系统简述

本文简要介绍我做的基于深度学习的音乐推荐系统。主要从需求分析与设计实现的角度来进行介绍。 &#xff08;一&#xff09;需求分析 基于深度学习的音乐推荐系统旨在以个性化音乐推荐模型为基础&#xff0c;使用B/S架构的形式实现。个性化推荐模型使用了 随机梯度下降&#x…

基于大数据的音乐推荐系统的设计与实现

基于大数据的音乐推荐系统是为了给听众推荐符合内心喜好的个性化系统。系统提供的功能有&#xff0c;音乐管理&#xff1a;管理员可以添加删除音乐&#xff0c;音乐查找&#xff1a;用户可以在系统中自行查找想要听的歌曲&#xff0c;音乐推荐&#xff1a;系统在收集了用户的行…

context-aware recommendation

智能手机的普及让大家随时随地都可接入互联网&#xff0c;而这样的随时随地的应用场景&#xff0c;也让传统推荐技术需要充分考虑&#xff0c;利用这些信息提升推荐的准确性&#xff0c;同时从另外一方面考虑&#xff0c; 这种符合LBS的推荐&#xff0c; 因为有了这些信息后&am…

accept函数_使用函数式接口

像上几章提到的&#xff0c;函数式接口定义且只定义了一个抽象方法。函数式接口很有用&#xff0c;因为抽象方法的签名可以描述Lambda表达式的签名。函数式接口的抽象方法的签名成为函数描述符。所以为了应用不同的Lambda表达式&#xff0c;你需要一套能够描述常见函数描述符的…