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

这篇具有很好参考价值的文章主要介绍了C# DataGridView控件的基础应用实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

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


一、界面简介

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


二、初始化

  初始化包括参数初始化和表头初始化。
  (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;
            else
                dataGridView.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";
                    else
                        all_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工程实现和描述了一遍,时间有限,如有描述的不够明白的,朋友们都可以与我讨论和指正。文章来源地址https://www.toymoban.com/news/detail-406983.html

到了这里,关于C# DataGridView控件的基础应用实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# Winfrom通过COM接口访问和控制Excel应用程序,将Excel数据导入DataGridView

    1.首先要创建xlsx文件 2.在Com中添加引用 3. 添加命名空间         using ApExcel = Microsoft.Office.Interop.Excel;         --这样起个名字方面后面写 4.样例 5.获取sheet.Cells值的时候也可以不使用强制转换,还要注意这个的下标是从1开始的

    2024年02月11日
    浏览(46)
  • DataGridView 控件分页

    在使用 Winform 开发桌面应用时,工具箱预先提供了丰富的基础控件,利用这些基础控件可以开展各类项目的开发。但是或多或少都会出现既有控件无法满足功能需求的情况,或者在开发类似项目时,我们希望将具有相同功能的模板封装成一个标准控件等,在这些场景下, wi

    2024年02月16日
    浏览(41)
  • C#Winform的DataGridView控件使用详解2—DataGridView表格样式设置及表格操作

    在展示和处理二维数据时,我们常常会想起Excel。但是使用Excel自带的各种函数处理较为繁琐的步骤时显得略显吃力,如果使用Excel自带宏编程,可能会对VB语言不甚熟悉或是感觉不nice。这个时候,熟悉C#编程语言的你,就需要用到DataGridView控件,设计一款二维数据处理利器。

    2024年02月03日
    浏览(52)
  • 基于C#的画图应用程序(窗体应用程序)C#组件、控件

      使用VS2019,建立窗体应用程序,借助一系列控件实现画图功能。   结合组件与控件的使用。 目录 一、预备知识 1、什么是C#的组件和控件 (1)共同点 (2)不同点 二、主要步骤 1、软件以及环境 2、设置接口 3、界面设计 4、编写代码 5、编译程序和运行 三、编写代码 1、设

    2023年04月08日
    浏览(53)
  • 使用双缓冲技术解决winform窗体控件卡顿(dataGridView加载数据缓慢)

    在做C/S项目中,做好的窗体出现了页面加载控件缓慢,放大、缩小窗体之后,窗体加载卡顿,以及数据渲染缓慢。 百度介绍:我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层上显示图像我们才能看到。现在,我需要创建一个虚拟的、看不见但是可以在上面画图(

    2024年02月02日
    浏览(46)
  • C#Winform中DataGridView控件根据鼠标左右键获取单元格值或者行列

    有多种方法可以获取单元格的值或者行列,此处选用了两种方式去获取分别用了CurrentCell方法和Rows[].Cells[]的方法去获取行列值 鼠标左键获取单独行列值 此处获取左键行列值的触发条件是表格中数据变化获取,对应DataGridView事件CellValueChanged。 用方法CurrentCell中的Value,RowIndex

    2024年02月09日
    浏览(45)
  • C#使用DataGridView模拟绘图

    接到一个需求,绘制一个水管线的图片,这种管线可以有12种分段方法,最后将这12种分段方法合并后在一条水管线上展示,要求: ⒈支持分段的属性展示; ⒉要求每个分段都能清晰展示,分段数在0(没有分段)~100之间,水管线长度不定; 3、每个分段的属性都有值,可以更

    2024年02月16日
    浏览(44)
  • C#:WinForm应用程序中用鼠标移动控件位置

    有时候在WinForm程序中,我们需要用鼠标移动程序窗口中的对象(例如图片对象等)的位置,可以通过定义控件的鼠标事件来实现。以命名为pictureBox1的PictureBox控件为例,分别定义它的MouseDown(按下鼠标按钮)、MouseMove(移动鼠标)、MouseUp(释放鼠标按钮)三个事件,代码如

    2024年02月16日
    浏览(44)
  • C# Winform DataGridView 数据刷新问题

    目录 一、问题 二、创建项目 三、绑定空的数据源 四、绑定有数据的数据源 五、修改绑定的数据源 六、解决数据源刷新问题 七、解决刷新数据界面闪烁 DataGridView 是比较常用的表格控件,在 DataGridView 中显示数据, 一般使用 dataGridView1.DataSource = 数据源,来绑定数据,数据

    2024年02月12日
    浏览(43)
  • C# DataGridView数据导出Excel文件

    博主在做项目的时候需要把数据库的数据用DataGridView展示,然后把展示的数据导出为Excel文件,很多时候我们做项目都会有一个下载文件的按钮,我们需要用微软的的接口,Microsoft.Office.Interop.Excel,我们需要导入这个引用对DataGridView数据进行处理,利用Microsoft.Office.Interop.Exc

    2024年02月04日
    浏览(105)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包