[Winform入门教程]DataGridview控件使用学习笔记
1.DataGridView控件及元素初始化
//DataGridView控件初始化 public System.Windows.Forms.DataGridView dataGridView1; this.dataGridView1 = new System.Windows.Forms.DataGridView(); //DataGridView列初始化 public System.Windows.Forms.DataGridViewCheckBoxColumn Column1; public System.Windows.Forms.DataGridViewTextBoxColumn Column2; public System.Windows.Forms.DataGridViewTextBoxColumn Column3; public System.Windows.Forms.DataGridViewTextBoxColumn Column4; public System.Windows.Forms.DataGridViewTextBoxColumn Column5; this.Column1 = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); //右键菜单初始化 public System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
2.DataGridView控件参数设置
this.dataGridView1.AllowUserToResizeRows = false;//设置用户是否可以调整行的大小。 this.dataGridView1.BackgroundColor = System.Drawing.Color.White;//设置DataGridView控件背景色 this.dataGridView1.ContextMenuStrip = this.contextMenuStrip1;//设置右键菜单 this.dataGridView1.RowHeadersVisible = false;//取消带*的第一列 this.dataGridView1.GridColor = System.Drawing.SystemColors.Control; this.dataGridView1.MultiSelect = false;//不允许多行选择 this.dataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;//设置垂直滚动条 this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;//设置选择模式为整行选择
3.DataGridViewColumn参数初始化
this.Column1.HeaderText = "选择"; this.Column1.Name = "Column1"; this.Column1.Resizable = System.Windows.Forms.DataGridViewTriState.False; this.Column1.Width = 40; this.Column2.HeaderText = "名称"; this.Column2.Name = "Column2"; this.Column2.Resizable = System.Windows.Forms.DataGridViewTriState.False; this.Column2.Width = 280; this.Column3.HeaderText = "学科"; this.Column3.Name = "Column3"; this.Column3.Resizable = System.Windows.Forms.DataGridViewTriState.False; this.Column3.Width = 240; this.Column4.HeaderText = "级别"; this.Column4.Name = "Column4"; this.Column4.Resizable = System.Windows.Forms.DataGridViewTriState.False; this.Column4.Width = 60; this.Column5.HeaderText = "编码"; this.Column5.Name = "Column5"; this.Column5.Resizable = System.Windows.Forms.DataGridViewTriState.False;
4.添加DataGridViewColumn至DataGridView
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[{ this.Column1, this.Column2, this.Column3, this.Column4, this.Column5});
5.清空DataGridView控件中的所有数据
this.DataGridView1.Rows.Clear();
6.DataGridView控件中最后一行添加数据
this.dataGridView1.Rows.Add("a", "b", "c", "d");
7.使DataGridView控件中某行被选中,取消之前第一行选中状态
this.dataGridView1.Rows[this.CurrentRowIndex].Selected = true; this.dataGridView1.Rows[0].Selected = false;
8.根据DataGridView内容自动调整列宽
this.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
9.在 C# 中跨线程访问 DataGridView 需要使用 Invoke 的完整解决方案
// 获取单元格值的通用方法 public object SafeGetCellValue(int rowIndex, int colIndex) { if (dataGridView1.InvokeRequired) { return dataGridView1.Invoke(new Func<int, int, object>((r, c) => { return dataGridView1.Rows[r].Cells[c].Value; }), rowIndex, colIndex); } else { return dataGridView1.Rows[rowIndex].Cells[colIndex].Value; } } // 使用示例 var value = SafeGetCellValue(0, 0);
// 设置单元格值的通用方法 public void SafeSetCellValue(int rowIndex, int colIndex, object value) { if (dataGridView1.InvokeRequired) { dataGridView1.BeginInvoke(new Action<int, int, object>((r, c, v) => { dataGridView1.Rows[r].Cells[c].Value = v; }), rowIndex, colIndex, value); } else { dataGridView1.Rows[rowIndex].Cells[colIndex].Value = value; } } // 使用示例 SafeSetCellValue(0, 0, "新值");
方法2:
private delegate void UpdateDataGridViewCellValue(DataGridView dgv, int rowIndex, int colIndex, string value); private UpdateDataGridViewCellValue updateDataGridViewCellValue; updateDataGridViewCellValue = new UpdateDataGridViewCellValue(SafeUpdateCellValue); private void SafeUpdateCellValue(DataGridView dgv, int rowIndex, int colIndex, string value) { if(dgv.InvokeRequired) { dgv.Invoke(new UpdateDataGridViewCellValue(SafeUpdateCellValue), new object[] { dgv, rowIndex, colIndex, value }); } else { dgv.Rows[rowIndex].Cells[colIndex].Value = value; } }
10.禁用DataGridView选中某个单元格时该列所在header高亮为蓝色效果
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle(); dataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Control;//原来为SystemColors.Highlight this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle10;
浙公网安备 33010602011771号