C# winform窗体DataGridView详解

  • DataGridView控件概述
  • 去除控件第一列,列表行填满控件
  • 在DataGridView控件中显示数据
  • 获取DataGridView控件中的当前单元格
  • 直接在DataGridView控件中修改数据
  • 当选中DataGridView控件中的行时显示不同的颜色
  • 禁止在DataGridView控件中添加和删除行
  • 使用Columns和Rows属性添加数据


DataGridView控件概述

DataGridView控件提供一种强大而灵活的以表格形式显示数据的方式。可以使用DataGridView控件来显示少量数据的只读视图,也可以对其进行缩放以显示特大数据集的可编辑视图。使用DataGridView控件,可以显示和编辑来自多种不同类型的数据源的表格数据。将数据绑定到DataGridView控件非常简单和直观,在大多数情况下,只需设置DataSource属性即可。DataGridView控件具有极高的可配置性和可扩展性,它提供了大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。当需要在Windows窗体应用程序中显示表格数据时,首先考虑使用DataGridView控件。若要以小型网格显示只读值或者使用户能够编辑具有数百万条记录的表,DataGridView控件将提供可以方便地进行编程以及有效地利用内存的解决方案。

去除控件第一列,列表行填满控件

自定义控件datagridview没有DefaultValuesNeeded_属性值


如上图所示:第一列多余且不怎么好看,如果想去除第一列,把RowHeadersVisible属性调为false即可

自定义控件datagridview没有DefaultValuesNeeded_数据_02


使数据行充满整个控件,调整AutoSizeColumnsMode属性为Fill

自定义控件datagridview没有DefaultValuesNeeded_属性值_03


最终效果

自定义控件datagridview没有DefaultValuesNeeded_数据_04

在DataGridView控件中显示数据

通过DataGridView控件显示数据表中的数据,首先需要使用DataAdapter对象查询指定的数据,然后通过该对象的Fill方法填充DataSet(关于DataAdapter对象以及Fill方法可参见第15章的内容),最后设置DataGridView控件的DataSource属性为DataSet的表格数据。DataSource属性用于获取或设置DataGridView控件所显示数据的数据源。
语法:
public Object DataSource { get; set; }
属性值:包含DataGridView控件要显示的数据的对象。

获取DataGridView控件中的当前单元格

若要与DataGridView进行交互,通常要求通过编程方式发现哪个单元格处于活动状态。如果需要更改当前单元格,可通过DataGridView控件的CurrentCell属性来获取当前单元格信息。
CurrentCell属性用于获取当前处于活动状态的单元格。
语法:
public DataGridViewCell CurrentCell { get; set; }
属性值:表示当前单元格的DataGridViewCell,如果没有当前单元格,则为空引用。默认值是第一列中的第一个单元格,如果控件中没有单元格,则为空引用。

直接在DataGridView控件中修改数据

在DataGridView控件中修改数据,主要用到DataTable的ImportRow方法和DataAdapter对象的Update方法。实现的过程是通过DataTable的ImportRow方法将更改后的数据复制到一个DataTable中,然后通过DataAdapter对象的Update方法,将DataTable中的数据更新到数据库中。
ImportRow方法用于将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值。
语法:
public void ImportRow (DataRow row)
row:要导入的DataRow。
DataAdapter对象的Update方法在第15章已经做过详细介绍,此处不再赘。

当选中DataGridView控件中的行时显示不同的颜色

可以利用DataGridView控件的SelectionMode、ReadOnly和SelectionBackColor属性实现当选中DataGridView控件中的行时显示不同的颜色。
(1)SelectionMode用于设置如何选择DataGridView的单元格。
语法:
public DataGridViewSelectionMode SelectionMode { get; set; }
属性值:DataGridViewSelectionMode值之一,默认RowHeaderSelect
(2)ReadOnly属性用于设置是否可以编辑DataGridView控件的单元格。
语法:
public bool ReadOnly { get; set; }
属性值:如果用户不能编辑DataGridView控件的单元格,则为true;否则为false。默认为false。
(3)SelectionBackColor属性用于设置DataGridView单元格在被选定时的背景色。
语法:
public Color SelectionBackColor { get; set; }
属性值:Color,它表示选定单元格的背景色,默认为Empty。

禁止在DataGridView控件中添加和删除行

通过设置DataGridView控件的公共属性AllowUserToAddRows、AllowUserToDeleteRows和ReadOnly,可以禁止在DataGridView控件中添加和删除行。AllowUserToAddRows属性设置一个值,该值指示是否向用户显示添加行的选项;AllowUserToDeleteRows属性设置一个值,该值指示是否允许用户从DataGridView中删除行;ReadOnly属性设置一个指示网格是否处于只读模式的值。
例如:禁止在DataGridView控件中添加和删除行,可以通过下面的代码实现
dataGridView1.AllowUserToAddRows = false; //禁止添加行
dataGridView1.AllowUserToDeleteRows = false; //禁止删除行
dataGridView1.ReadOnly = true; //控件中的数据为只读

使用Columns和Rows属性添加数据

通过设置DataGridView控件的Columns和Rows属性值,可以向数据控件DataGridView添加数据项,使其能够手动添加数据。
(1)Columns属性用于获取一个包含控件中所有列的集合。
语法:
public DataGridViewColumnCollection Columns { get; }
属性值:一个DataGridViewColumnCollection,包含DataGridView控件中的所有列。
(2)Rows属性获取一个集合,该集合包含DataGridView控件中的所有行
语法:
public DataGridViewRowCollection Rows { get; }
属性值:一个DataGridViewRowCollection,包含DataGridView控件中的所有行。