• C# DataGridView(干货版)


    一、添加行列并获取信息

    界面如下:

    在这里插入图片描述

    代码如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 
    11 namespace DataGridView
    12 {
    13     public partial class Form1 : Form
    14     {
    15         int count = 0;
    16         public Form1()
    17         {
    18             InitializeComponent();
    19         }
    20 
    21         private void Form1_Load(object sender, EventArgs e)
    22         {
    23             //根据Header和所有单元格的内容自动调整行的高度
    24             dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;  
    25             //添加三列
    26             for (int i = 0; i < 3; i++)
    27             {
    28                 dataGridView1.Columns.Add(new DataGridViewTextBoxColumn());
    29                 dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;  //设置所有列自适应宽度
    30             }
    31             //三列的标题
    32             dataGridView1.Columns[0].HeaderText = "序号";
    33             dataGridView1.Columns[1].HeaderText = "日期";
    34             dataGridView1.Columns[2].HeaderText = "说明";
    35             //设置对齐方式和字体
    36             dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
    37             dataGridView1.Font = new Font("宋体", 11);
    38         }
    39         //添加行
    40         private void button1_Click(object sender, EventArgs e)
    41         {
    42             int index = this.dataGridView1.Rows.Add();
    43             this.dataGridView1.Rows[index].Cells[0].Value = count++;
    44             this.dataGridView1.Rows[index].Cells[1].Value = "2";
    45             this.dataGridView1.Rows[index].Cells[2].Value = "监听";
    46         }
    47         //获取信息
    48         private void button2_Click(object sender, EventArgs e)
    49         {
    50             //获取当前活动单元格内容
    51             Console.WriteLine("当前活动单元格内容:" + dataGridView1.CurrentCell.Value);  
    52              //取得当前单元格的列Index
    53             Console.WriteLine("当前单元格的列Index:" + dataGridView1.CurrentCell.ColumnIndex); 
    54             //取得当前单元格的行Index
    55             Console.WriteLine("取得当前单元格的行Index:" + dataGridView1.CurrentCell.RowIndex);   
    56             // 设定 (1, 1) 为当前单元格 
    57             dataGridView1.CurrentCell = dataGridView1[1, 1];   
    58         }
    59     }
    60 }

    测试:

    点击添加:

    在这里插入图片描述

    选中(2,1)处的单元格,点击获取,命令行输出:

    1 当前活动单元格内容:2
    2 当前单元格的列Index:1
    3 取得当前单元格的行Index:2

    活动单元格变为(1,1)处的单元格:

    在这里插入图片描述


    二、设置单元格只读属性

    代码如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 
    11 namespace DataGridView
    12 {
    13     public partial class Form1 : Form
    14     {
    15         int count = 0;
    16         public Form1()
    17         {
    18             InitializeComponent();
    19         }
    20 
    21         private void Form1_Load(object sender, EventArgs e)
    22         {
    23             //根据Header和所有单元格的内容自动调整行的高度
    24             dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;  
    25             //添加三列
    26             for (int i = 0; i < 3; i++)
    27             {
    28                 dataGridView1.Columns.Add(new DataGridViewTextBoxColumn());
    29                 dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;  //设置所有列自适应宽度
    30             }
    31             //三列的标题
    32             dataGridView1.Columns[0].HeaderText = "序号";
    33             dataGridView1.Columns[1].HeaderText = "日期";
    34             dataGridView1.Columns[2].HeaderText = "说明";
    35             //设置对齐方式和字体
    36             dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
    37             dataGridView1.Font = new Font("宋体", 11);
    38            
    39            /******************************新增加的代码************************************/
    40             dataGridView1.ReadOnly = true;    //设置所有单元格都不可编辑
    41             // 设置 DataGridView1 的第2列整列单元格为只读
    42             dataGridView1.Columns[1].ReadOnly = true;   
    43              // 设置 DataGridView1 的第3行整行单元格为只读
    44             dataGridView1.Rows[2].ReadOnly = true;     
    45              // 设置 DataGridView1 的[0,0]单元格为只读
    46             dataGridView1[0, 0].ReadOnly = true;        
    47              /**********************************************************************************/
    48         } 
    49         //添加行
    50         private void button1_Click(object sender, EventArgs e)
    51         {
    52             int index = this.dataGridView1.Rows.Add();
    53             this.dataGridView1.Rows[index].Cells[0].Value = count++;
    54             this.dataGridView1.Rows[index].Cells[1].Value = "2";
    55             this.dataGridView1.Rows[index].Cells[2].Value = "监听";
    56         }
    57        //获取
    58         private void button2_Click(object sender, EventArgs e)
    59         {
    60             //获取当前活动单元格内容
    61             Console.WriteLine("当前活动单元格内容:" + dataGridView1.CurrentCell.Value); 
    62              //取得当前单元格的列Index
    63             Console.WriteLine("当前单元格的列Index:" + dataGridView1.CurrentCell.ColumnIndex); 
    64             //取得当前单元格的行Index
    65             Console.WriteLine("取得当前单元格的行Index:" + dataGridView1.CurrentCell.RowIndex);   
    66             // 设定 (1, 1) 为当前单元格 
    67             dataGridView1.CurrentCell = dataGridView1[1, 1];   
    68         }
    69     }
    70 }

    测试:

    双击单元格,单元格不可编辑:

    在这里插入图片描述


    三、最新一行不显示

    通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )

    在这里插入图片描述

    即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。

    代码如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 
    11 namespace DataGridView
    12 {
    13     public partial class Form1 : Form
    14     {
    15         int count = 0;
    16         public Form1()
    17         {
    18             InitializeComponent();
    19         }
    20 
    21         private void Form1_Load(object sender, EventArgs e)
    22         {
    23            //根据Header和所有单元格的内容自动调整行的高度
    24             dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 
    25             //添加三列
    26             for (int i = 0; i < 3; i++)
    27             {
    28                 dataGridView1.Columns.Add(new DataGridViewTextBoxColumn());
    29                 //设置所有列自适应宽度
    30                 dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;  
    31             }
    32             //三列的标题
    33             dataGridView1.Columns[0].HeaderText = "序号";
    34             dataGridView1.Columns[1].HeaderText = "日期";
    35             dataGridView1.Columns[2].HeaderText = "说明";
    36             //设置对齐方式和字体
    37             dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
    38             dataGridView1.Font = new Font("宋体", 11);
    39  
    40             //设置所有单元格都不可编辑
    41             dataGridView1.ReadOnly = true;    
    42             // 设置 DataGridView1 的第2列整列单元格为只读
    43             dataGridView1.Columns[1].ReadOnly = true; 
    44             // 设置 DataGridView1 的第3行整行单元格为只读  
    45             dataGridView1.Rows[2].ReadOnly = true;      
    46             // 设置 DataGridView1 的[0,0]单元格为只读 
    47             dataGridView1[0, 0].ReadOnly = true;               
    48         }
    49         //添加行
    50         private void button1_Click(object sender, EventArgs e)
    51         {
    52             int index = this.dataGridView1.Rows.Add();
    53             this.dataGridView1.Rows[index].Cells[0].Value = count++;
    54             this.dataGridView1.Rows[index].Cells[1].Value = "2";
    55             this.dataGridView1.Rows[index].Cells[2].Value = "监听";
    56             /*****************新增加的代码********************/
    57             dataGridView1.AllowUserToAddRows = false;
    58             /*************************************************/
    59         }
    60         //获取
    61         private void button2_Click(object sender, EventArgs e)
    62         {
    63             //获取当前活动单元格内容
    64             Console.WriteLine("当前活动单元格内容:" + dataGridView1.CurrentCell.Value);  
    65             //取得当前单元格的列Index
    66             Console.WriteLine("当前单元格的列Index:" + dataGridView1.CurrentCell.ColumnIndex);  
    67              //取得当前单元格的行Index
    68             Console.WriteLine("取得当前单元格的行Index:" + dataGridView1.CurrentCell.RowIndex);  
    69             // 设定 (1, 1) 为当前单元格 
    70             dataGridView1.CurrentCell = dataGridView1[1, 1];   
    71         }
    72     }
    73 }

    测试:
    在这里插入图片描述


    四、行列的隐藏和删除

    (1) 行、列的隐藏

    1 DataGridView1.Columns[0].Visible = false;    // DataGridView1的第一列隐藏 
    2 DataGridView1.Rows[0].Visible = false;       // DataGridView1的第一行隐藏 

    2) 行头、列头的隐藏

    1 DataGridView1.ColumnHeadersVisible = false; // 列头隐藏 
    2 DataGridView1.RowHeadersVisible = false; // 行头隐藏 

    (3) 行和列的删除

    1 //删除名为"Column1"的列 
    2 DataGridView1.Columns.Remove("Column1");
    3 //删除第一列
    4 DataGridView1.Columns.RemoveAt(0);
    5 //删除第一行 
    6 DataGridView1.Rows.RemoveAt(0);

    (4) 删除选中行

    1 foreach (DataGridViewRow r in DataGridView1.SelectedRows)
    2 {
    3     if (!r.IsNewRow)
    4     {
    5         DataGridView1.Rows.Remove(r);
    6     }
    7 }    

    五、禁止列或者行的Resize

    (1) 禁止所有的列或者行的Resize

    1 // 禁止用户改变DataGridView1的所有列的列宽 
    2 DataGridView1.AllowUserToResizeColumns = false;
    3 //禁止用户改变DataGridView1の所有行的行高 
    4 DataGridView1.AllowUserToResizeRows = false;

    但是可以通过 DataGridViewColumn.Width 或者 DataGridViewRow.Height 属性设定列宽和行高。

    (2) 禁止指定行或者列的Resize

    1 // 禁止用户改变DataGridView1的第一列的列宽 
    2 DataGridView1.Columns[0].Resizable = DataGridViewTriState.False;
    3 // 禁止用户改变DataGridView1的第一列的行宽 
    4 DataGridView1.Rows[0].Resizable = DataGridViewTriState.False;

    (3) 列宽和行高的最小值的设定

    1 // 第一列的最小列宽设定为 100
    2 DataGridView1.Columns[0].MinimumWidth = 100;
    3 // 第一行的最小行高设定为 50
    4 DataGridView1.Rows[0].MinimumHeight = 50;

    (4) 禁止用户改变行头的宽度以及列头的高度

    1 // 禁止用户改变列头的高度 
    2 DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
    3 // 设置用户改变行头的宽度 
    4 DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;

    六、列宽和行高自动调整的设定
    (1) 设定所有单元格行高和列宽自动调整

    1 // 设定包括Header和所有单元格的列宽自动调整 
    2 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
    3 // 设定包括Header和所有单元格的行高自动调整 
    4 DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

    (2) 设定指定单元格行高和列宽自动调整

    1 // 第一列自动调整 
    2 DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    3 // 设定列头的宽度可以自由调整 
    4 DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    5 // 设定行头的宽度可以自由调整 
    6 DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;

    七、行头列头的单元格

    1 // 改变DataGridView1的第一列列头内容
    2 DataGridView1.Columns[0].HeaderCell.Value = "第一列";
    3 // 改变DataGridView1的第一行行头内容
    4 DataGridView1.Rows[0].HeaderCell.Value = "第一行";
    5 // 改变DataGridView1的左上头部单元内容
    6 DataGridView1.TopLeftHeaderCell.Value = "左上";

    八、单元格的边框、网格线样式的设定

    (1)DataGridView 的边框线样式的设定

    DataGridView 的边框线的样式是通过 DataGridView.BorderStyle 属性来设定的。

    BorderStyle 属性设定值是一个BorderStyle 枚举: FixedSingle(单线,默认)、Fixed3D、None。

    (2)单元格的边框线样式的设定

    单元格的边框线的样式是通过 DataGridView.CellBorderStyle 属性来设定的。

    CellBorderStyle 属性设定值是DataGridViewCellBorderStyle 枚举。

    (4) 单元格的边框颜色的设定 单元格的边框线的颜色可以通过 DataGridView.GridColor 属性来设定的。

    默认是 ControlDarkDark 。但是只有在 CellBorderStyle 被设定为 Single、SingleHorizontal、SingleVertical 的条件下才能改变其边框线的颜色。

    同样,ColumnHeadersBorderStyle 以及 RowHeadersBorderStyle 只有在被设定为 Single 时,才能改变颜色

  • 相关阅读:
    node express 上传文件
    [Java] 对象转型-01
    [Java] 类的Equals方法 (String, Data类都已经自动重写)
    editor does not contain a main type" 错误解决方
    Ubuntu网络连接图标消失解决方法
    [面试] 从尾到头打印链表-递归实现
    C++继承的例子 (1)
    国内访问gmail
    [python] 第7章 函数 第8章 模块
    Devcpp(Dev C++)使用说明及技巧
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/12487214.html
Copyright © 2020-2023  润新知