简介:
DataGridView 控件用于显示数据提供一个自定义的表。 DataGridView 类使用属性允许单元格、行、列和边框的自定义例如 DefaultCellStyle、 ColumnHeadersDefaultCellStyle、 CellBorderStyle和 GridColor。
可以使用 DataGridView 控件显示数据有或没有基础数据源。 未指定数据源,可以创建使用 Rows 和 Columns 属性,包含数据并将其直接添加到 DataGridView 的列和行。 还可以使用 Rows 集合访问 DataGridViewRow 对象,并 DataGridViewRow. Cells 属性读取或写入单元格直接值。 Item 索引器还提供了直接访问单元格。
为手动填充控件的替代方法,可以设置 DataSource 和 DataMember 属性绑定 DataGridView 到数据源并自动填充其数据。
代码下载链接:https://download.csdn.net/download/c_gyl/10859343
介绍
1.属性
Name | 获取或设置控件的名称。 | ||||||||||||||||||||
Anchor | 获取或设置控件绑定到的容器的边缘并确定控件如何随其父级一起调整大小。 | ||||||||||||||||||||
AllowUserToAddRows | 获取或设置指示将该选项的行是否显示给用户。 | ||||||||||||||||||||
AllowUserToDeleteRows | 获取或设置指示用户是否允许从 DataGridView删除行。 | ||||||||||||||||||||
AllowUserToOrderColumns | 获取或设置指示重新定位手动的列是否启用。 | ||||||||||||||||||||
AllowUserToResizeColumns | 获取或设置指示用户是否可以调整列。 | ||||||||||||||||||||
AllowUserToResizeRows | 获取或设置指示用户是否可以调整行。 | ||||||||||||||||||||
ColumnHeadersHeight | 获取或设置列标题行的高度,单位是像素。 | ||||||||||||||||||||
ColumnHeadersHeightSizeMode | 获取或设置一个列标题的高度是否可调整的,并且是否可由用户调整或自动调整以适合头文件的内容。 | ||||||||||||||||||||
ColumnHeadersVisible | 获取或设置一个列标题行是否显示。 | ||||||||||||||||||||
Columns | 获取包含在控件中所有列的集合。使用此属性返回的 DataGridViewColumnCollection ,表示 DataGridView 控件中 DataGridViewColumn 对象的集合。可以添加列,移除列和获取对 DataGridView 控件中包含的列的计数。
| ||||||||||||||||||||
ColumnHeadersDefaultCellStyle | 获取或设置默认列标题样式。 | ||||||||||||||||||||
RowHeadersVisible | 获取或设置一个包含行标头的列是否显示。 | ||||||||||||||||||||
RowHeadersWidth | 获取或设置列的宽度,单位是像素。RowHeadersWidth 属性可用于调整行标题列与指定的宽度。 若要调整该列的宽度与行标题单元格的内容,请使用 AutoResizeRowHeadersWidth 方法。 | ||||||||||||||||||||
RowHeadersWidthSizeMode | 获取或设置一个行标头的宽度是否可调整的,并且是否可由用户调整或自动调整以适合头文件的内容。 | ||||||||||||||||||||
ScrollBars | 获取或设置滚动条的类型为 DataGridView 控件显示。 | ||||||||||||||||||||
SelectionMode | 获取或设置一 DataGridView 的单元格如何可以选择。 | ||||||||||||||||||||
ContextMenuStrip | 获取或设置与此控件关联的 ContextMenuStrip。 | ||||||||||||||||||||
ReadOnly | 获取或设置指示用户是否可以编辑 DataGridView 控件的单元格。 |
2.事件
CellClick | 当单元格的任何部分单击,发生。 |
CellContentClick | 在单元格中的内容单击,发生。 |
DataError | 出现问题,则外部数据分析或验证操作引发异常,或者,当尝试提交数据写入数据源失败。 |
EditingControlShowing | 编辑的单元格一个控件显示,发生。 |
RowsAdded | 将新行添加到 DataGridView后,发生。 |
Scroll | 通过控件内容发生,当用户滚动。 |
3.使用
- 添加控件。
- 编辑列控件,当前列的属性。可通过控件右上角的三角符号或者控件属性Columns设置。
- 数据源绑定设置。例如:
HeaderText属性设置为No。这个决定着显示出来的第一行的列表题的名称。
DataPropertyName属性设置为No。这个决定着绑定数据源的DataTable的Rows要传入的列标题名称。
Design的Name属性设置为No。这个是控件的名称。
4.演示
- 初始化绑定。
- 行表头是否显示。
- 获取数据。
- 更新显示。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 列表
{
struct structData
{
public int No;
public string Info;
}
enum enumData
{
No = 0,
Info,
}
public partial class Form1 : Form
{
DataTable Table = new DataTable();
structData[] Data = new structData[2];
string NoColumnName = Enum.GetName(typeof(enumData), 0);
string InfoColumnName = Enum.GetName(typeof(enumData), 1);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Init();
}
private void Init()
{
Bind();
//ColumnHeader();
}
private void Bind()
{
Table.Columns.Add(NoColumnName, typeof(int));
Table.Columns.Add(InfoColumnName, typeof(string));
for (int i = 0; i < Data.Length; i++)
{
DataRow row = Table.NewRow();
row[NoColumnName] = Data[i].No;
row[InfoColumnName] = Data[i].Info;
Table.Rows.Add(row);
}
Table.AcceptChanges();
dataGridView1.DataSource = Table;
dataGridView1.Refresh();
}
private void ColumnHeader()
{
dataGridView1.RowHeadersVisible = true;
dataGridView1.TopLeftHeaderCell.Value = "Index";
for (int i = 0; i < Data.Length; i++)
{
dataGridView1.Rows[i].HeaderCell.Value = i.ToString();
}
}
private void DisplayToData()
{
for (int i = 0; i < Data.Length; i++)
{
Table.Rows[i][NoColumnName] = Data[i].No;
Table.Rows[i][InfoColumnName] = Data[i].Info;
}
}
private void DataToDisplay()
{
for (int i = 0; i < Data.Length; i++)
{
Data[i].No = int.Parse(Table.Rows[i][NoColumnName].ToString());
Data[i].Info = Table.Rows[i][InfoColumnName].ToString();
}
}
}
}
4.1 绑 定
Bind();
首先要绑定,把列表的数据实时更新到DataTable。这样每次读写数据,只需要通过DataTable。
Table.Columns.Add(NoColumnName, typeof(int));NoColumnName变量就是属性DataPropertyName设置的内容。变量类型通过 typeof(int)设置。
dataGridView1.DataSource = Table;绑定数据源。这样每次读写数据,只需要通过Table。
4.2 行表头
ColumnHeader();
设置dataGridView1.RowHeadersVisible = true;
左上角的行表头的名称,根据需要设置。 dataGridView1.TopLeftHeaderCell.Value = "Index";每行的行表题内容 dataGridView1.Rows[i].HeaderCell.Value = i.ToString();
4.3 获取数据
DisplayToData();
获取列表的数据,更新到自定义的变量类型里。
4.4 更新显示
DataToDisplay();
程序更改数据后,显示到列表。