C# DatagridView常用操作汇总

C# DataGridView常用操作汇总

前言

在C# Winform应用程序开发中,DataGridView是一个非常实用的控件,它可以用来显示和编辑数据,而且比起ListView控件来说更加灵活,功能更加丰富。在本攻略中,我们会介绍DataGridView控件的常用操作,包括如何绑定数据源、如何设置单元格样式、如何实现排序过滤和单元格合并等。

绑定数据源

DataGridView控件可以与多种数据源进行绑定,包括DataTable、DataSet、BindingSource等。下面我们将演示如何使用DataTable和DataSet来绑定DataGridView。

绑定DataTable

下面是一个简单的DataTable:

DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Age", typeof(int));

table.Rows.Add(1, "张三", 18);
table.Rows.Add(2, "李四", 20);
table.Rows.Add(3, "王五", 22);

然后我们可以使用以下代码将DataTable绑定到DataGridView控件上:

dataGridView1.DataSource = table;

这样就完成了DataGridView控件和数据表的绑定。

绑定DataSet

如果你的数据需要分成多个表进行组织管理,那么可以使用DataSet来进行数据绑定。下面是一个简单的DataSet:

DataSet dataSet = new DataSet();

DataTable table1 = new DataTable();
table1.TableName = "学生";
table1.Columns.Add("ID", typeof(int));
table1.Columns.Add("Name", typeof(string));
table1.Columns.Add("Age", typeof(int));

table1.Rows.Add(1, "张三", 18);
table1.Rows.Add(2, "李四", 20);
table1.Rows.Add(3, "王五", 22);

DataTable table2 = new DataTable();
table2.TableName = "课程";
table2.Columns.Add("ID", typeof(int));
table2.Columns.Add("Name", typeof(string));
table2.Columns.Add("Teacher", typeof(string));

table2.Rows.Add(1, "数学", "张老师");
table2.Rows.Add(2, "英语", "李老师");
table2.Rows.Add(3, "物理", "王老师");

dataSet.Tables.Add(table1);
dataSet.Tables.Add(table2);

然后我们可以使用以下代码将DataSet绑定到DataGridView控件上:

dataGridView1.DataSource = dataSet.Tables["学生"];

这样就完成了DataGridView控件和数据集的绑定。

设置单元格样式

DataGridView控件提供了丰富的样式属性,可以用来设置单元格的字体、背景色、边框等样式。下面的代码演示了如何设置单元格的背景色:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 1 && e.RowIndex % 2 == 0)
    {
        e.CellStyle.BackColor = Color.LightGreen;
    }
}

这段代码会将第奇数行的第二列单元格的背景色设置为浅绿色。

实现排序和过滤

DataGridView控件提供了默认的排序和过滤功能,你也可以自定义排序和过滤规则。

实现排序

DataGridView控件提供了排序功能,只需要设置排序列和排序方向即可。下面的代码将第一列作为排序列,按照升序排序:

dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending);

实现过滤

DataGridView控件提供了过滤功能,只需要设置过滤条件即可。下面的代码将第二列等于“张三”或者“李四”的行进行过滤:

(table1.DefaultView as DataView).RowFilter = "Name = '张三' or Name = '李四'";

实现单元格合并

DataGridView控件提供了单元格合并功能,可以将多个单元格合并成一个单元格。下面的代码将第一行的前三个单元格合并成一个单元格,并将其居中显示:

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    if (e.ColumnIndex == 0 && e.RowIndex == 0)
    {
        e.Graphics.FillRectangle(Brushes.White, e.CellBounds);

        using (SolidBrush brush = new SolidBrush(e.CellStyle.ForeColor))
        {
            StringFormat format = new StringFormat();
            format.LineAlignment = StringAlignment.Center;
            format.Alignment = StringAlignment.Center;
            e.Graphics.DrawString("合并的单元格", e.CellStyle.Font, brush, e.CellBounds, format);

            e.Handled = true;
        }
    }
}

以上就是C# DataGridView控件的常用操作汇总。如果你还不熟悉DataGridView控件,可以通过这些示例代码来加深理解,相信能够帮助你更好地使用这个控件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# DatagridView常用操作汇总 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • c#使用linq把多列的List转化为只有指定列的List

    想要使用LINQ将多列的列表转化为只有指定列的列表,可以按照以下步骤进行操作: 首先创建一个包含多列数据的列表,可以使用下面的代码创建一个实例用于演示: List<Person> persons = new List<Person>() { new Person() { Id = 1, Name = "Tom", …

    C# 2023年6月1日
    00
  • unity3d实现七天签到功能

    实现七天签到功能需要以下步骤: 步骤一:创建UI界面 首先,需要在Unity3D中创建一个UI界面,用于展示用户的签到记录和当天是否签到。可以使用Unity3D的内置UI工具,或者使用第三方插件,如NGUI。 步骤二:创建签到数据结构 在编写签到功能之前,需要定义一个签到的数据结构,保存用户的签到记录。可以用一个数组保存七天的签到状态,true表示已签到,f…

    C# 2023年6月1日
    00
  • ASP.NET在IIS7中上下文中不可用的解决方法

    在IIS7中,ASP.NET应用程序可能会遇到上下文不可用的问题。这可能是由于IIS7的集成模式引起的。本文将提供详解“ASP.NET在IIS7中上下文中不可用的解决方法”的完整攻略,包括如何解决上下文不可用的问题、如何在IIS7中配置ASP.NET应用程序等。 解决上下文不可用的问题 在IIS7中,ASP.NET应用程序可能会遇到上下文不可用的问题。这可能…

    C# 2023年5月15日
    00
  • WPF+ASP.NET SignalR实现后台通知功能的示例代码

    搭建WPF+ASP.NET SignalR环境 首先需要配置好WPF和ASP.NET SignalR的环境。 WPF可以使用Visual Studio自带的WPF应用程序模板创建,而ASP.NET SignalR则需要在Visual Studio中额外进行安装和配置。安装方法可以参考官方文档,也可以在NuGet中搜索 Microsoft.AspNet.Sig…

    C# 2023年5月31日
    00
  • C#枚举的高级应用

    接下来我将为你讲解C#枚举的高级应用。 1. 枚举的定义 在C#中,枚举本质上是一种值类型,它为一组相关的常量定义了一个公共类型别名。枚举使用关键字enum定义,通常被用来表示有限集合的值,如颜色(ILenum)、星期几、月份等。 下面是一段枚举的定义示例代码: enum Directions { North, South, East, West } 上述代…

    C# 2023年5月15日
    00
  • c#操作附加数据库的方法

    下面将详细讲解如何使用 C# 操作附加数据库。 什么是附加数据库? 附加数据库指的是,将已有的数据库文件(.mdf、.ndf、.ldf)添加到 SQL Server 实例中,这样可以通过 SQL Server 对该数据库进行操作,而不需要创建新的数据库。 C# 操作附加数据库的方法 步骤一:引用必要的命名空间 在使用 C# 操作附加数据库之前,需要引用以下命…

    C# 2023年6月1日
    00
  • C# 中的GroupBy的动态拼接问题及GroupBy<>用法介绍

    让我们开始讲解C#中的GroupBy的动态拼接问题及GroupBy<>用法介绍。 GroupBy 动态拼接问题 在C#中,GroupBy是一个非常常用的LINQ操作,它可以根据指定的键值来分组集合中的元素。 然而,在实际使用中,如果我们要对多个属性进行GroupBy操作,就会遇到一个动态拼接GroupBy键值的问题。比如说,我们有一个学生集合,需…

    C# 2023年6月1日
    00
  • C#中重载相等(==)运算符示例

    C#中的相等运算符(==)可以进行重载,使得不同类型的对象也可以进行相等判断。在此提供一份重载相等运算符的示例攻略,帮助大家更好地理解。 1. 什么是重载相等运算符? 在C#中,我们可以使用相等运算符(==)或不等运算符(!=)来判断两个对象是否相等。默认情况下,这些运算符只对基元类型(如int,double,bool等)进行比较。但是,我们经常需要比较两个…

    C# 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部