一、添加行列并获取信息
界面如下:
代码如下:
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 时,才能改变颜色