Winform/C#入门编程之第二部分常用控件(十四:数据控件DataGridView)

简介:

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 控件中包含的列的计数。

 

DataGridViewColumn属性
HeaderText

获取或设置列标题单元格的标题文本。

DataPropertyName

获取或设置数据源属性的名称或与 DataGridViewColumn 绑定的数据库列的名称。

Name获取或设置列名称。
SortMode获取或设置列的排序模式。
Width

获取或设置列的当前宽度。

DefaultCellStyle

获取或设置列的默认单元格样式。DataGridView 控件使用由单元格的 InheritedStyle 属性指示的样式显示其单元格,该属性从 DataGridViewCellStyle 类型的其他属性继承样式。 对于此列中的单元格,通过 DefaultCellStyle 属性指定的样式可重写通过 DataGridView. DefaultCellStyle 属性指定的样式,但它们都可以被通过 DataGridView. RowsDefaultCellStyle、 DataGridView. AlternatingRowsDefaultCellStyle、 DataGridViewRow. DefaultCellStyle 和 DataGridViewCell. Style 属性指定的样式重写。

DataGridViewCellStyle属性
Alignment获取或设置一个值,该值指示 DataGridView 单元格内的单元格内容的位置。
BackColor获取或设置 DataGridView 单元格的背景色。
Format获取或设置应用于 DataGridView 单元格的文本内容的格式字符串。
NullValue获取或设置与 DBNull. Value 或null 的单元格值对应的 DataGridView 单元格显示值。
ColumnHeadersDefaultCellStyle

获取或设置默认列标题样式。

RowHeadersVisible获取或设置一个包含行标头的列是否显示。
RowHeadersWidth获取或设置列的宽度,单位是像素。RowHeadersWidth 属性可用于调整行标题列与指定的宽度。 若要调整该列的宽度与行标题单元格的内容,请使用 AutoResizeRowHeadersWidth 方法。
RowHeadersWidthSizeMode

获取或设置一个行标头的宽度是否可调整的,并且是否可由用户调整或自动调整以适合头文件的内容。

ScrollBars

获取或设置滚动条的类型为 DataGridView 控件显示。

SelectionMode

获取或设置一 DataGridView 的单元格如何可以选择。

ContextMenuStrip

获取或设置与此控件关联的 ContextMenuStrip。

ReadOnly

获取或设置指示用户是否可以编辑 DataGridView 控件的单元格。

 

2.事件

常用事件
CellClick

当单元格的任何部分单击,发生。

CellContentClick

在单元格中的内容单击,发生。

DataError

出现问题,则外部数据分析或验证操作引发异常,或者,当尝试提交数据写入数据源失败。

EditingControlShowing

编辑的单元格一个控件显示,发生。

RowsAdded

将新行添加到 DataGridView后,发生。

Scroll

通过控件内容发生,当用户滚动。

 

3.使用

  1. 添加控件。
  2. 编辑列控件,当前列的属性。可通过控件右上角的三角符号或者控件属性Columns设置。          
  3. 数据源绑定设置。例如:

HeaderText属性设置为No。这个决定着显示出来的第一行的列表题的名称。

DataPropertyName属性设置为No。这个决定着绑定数据源的DataTable的Rows要传入的列标题名称。

Design的Name属性设置为No。这个是控件的名称。

DataGridView控件
编辑列
DefaultCellStyle属性

 

4.演示

  1. 初始化绑定。
  2. 行表头是否显示。
  3. 获取数据。
  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();

程序更改数据后,显示到列表。

 

标题
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值