1、相关介绍:
本文介绍C#Winform中关于DataGridView控件的一些使用技巧,仅供参看:
1. DataGridView当前的单元格属性取得、变更
代码: [C#] '当前选中单元的值 Console.WriteLine(DataGridView1.CurrentCell.Value) '当前列的Index值 Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex) '当前单元的行Index值 Console.WriteLine(DataGridView1.CurrentCell.RowIndex) '将控件中(0, 0)处的值,赋给当前单元格. DataGridView1.CurrentCell =DataGridView1[0, 0]
|
2. DataGridView编辑属性
代码: [C#] 'DataGridView1只读属性 DataGridView1.ReadOnly = True 指定行列单元格编辑属性 [C#] DataGridView1.Columns[1]ReadOnly = True DataGridView1.Rows[2].ReadOnly = True DataGridView1[0, 0].ReadOnly = True 根据条件判断单元格的编辑属性 下例中column2的值是True的时候,Column1设为可编辑 [C#] 代码 private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { if (this.DataGridView1.Columns[e.ColumnIndex].Name.ToString().Equals("Column2")) { if (DataGridView1["Column2", e.RowIndex].Value.ToString().ToLower().Equals("true")) { DataGridView1["Column1", e.RowIndex].ReadOnly = false; } else { DataGridView1["Column1", e.RowIndex].ReadOnly = true; } } } |
3. DataGridView最下面一列新追加行非表示
代码: [C#] DataGridView1.AllowUserToAddRows = False; |
4. DataGridView判断当前选中行是否为新追加的行
代码: [C#] if (DataGridView1.CurrentRow.IsNewRow) { Console.WriteLine("当前行,是新添加的行"); } else { Console.WriteLine("当前行,不是新添加的行"); } |
5. DataGridView删除行可否设定
代码: [C#] DataGridView1.AllowUserToDeleteRows = False 根据条件判断当前行是否要删除 [C#] 代码 private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { if (MessageBox.Show("确定要删除吗?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question).Equals(System.Windows.Forms.DialogResult.OK)) { } else { e.Cancel = true; } } |
6. DataGridView行列不表示和删除
代码: 行列不表示 [C#] 'DataGridView1的第一列不表示 DataGridView1.Columns[0].Visible = False 'DataGridView1的第一行不表示 DataGridView1.Rows[0].Visible = False 行列表头部分不表示 [C#] DataGridView1.ColumnHeadersVisible = False DataGridView1.RowHeadersVisible = False 指定行列删除 [C#] DataGridView1.Columns.Remove("Column1") DataGridView1.Columns.RemoveAt(0) DataGridView1.Rows.RemoveAt(0) 选择的行列删除(多行列) [C#] 'DataGridView1删除选中的行 foreach (DataGridViewRow r in DataGridView1.SelectedRows) { if (!r.IsNewRow) { DataGridView1.Rows.Remove(r); } } |
7. DataGridView行列宽度高度设置为不能编辑
代码: [C#] 'DataGridView1的列的宽设为不能编辑 DataGridView1.AllowUserToResizeColumns = False
'DataGridView1的行的高设为不能编辑 DataGridView1.AllowUserToResizeRows = False 指定行列宽度高度设置为不能编辑 [C#] 'DataGridView1指定列宽度设置为不能编辑 DataGridView1.Columns[0].Resizable = DataGridViewTriState.False 'DataGridView1指定行高度设置为不能编辑 DataGridView1.Rows[0].Resizable = DataGridViewTriState.False 列幅行高最小值设定 [C#] '列幅最小值设定为100 DataGridView1.Columns[0].MinimumWidth = 100 '行高最小值设定为50 DataGridView1.Rows[0].MinimumHeight = 50 行列表头部分行高列幅设置为不能编辑 [C#] 行列表头部分行高设置为不能编辑 DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing 行列表头部分列幅设置为能编辑 DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing
|
8. DataGridView行高列幅自动调整
代码: [C#] 根据内容,列幅自动调整 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells 根据内容,行高自动调整 DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells 表头部分行高列幅自动调整 [C#] '表头列高自动调整 DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize '表头行幅自动调整 DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders 指定列自动调整 [C#] '指定列的列幅自动调整 DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells |
9. DataGridView指定行列冻结
代码: 列冻结(当前列以及左侧做所有列) [C#] 'DataGridView1的左侧2列固定 DataGridView1.Columns[1].Frozen = True 行冻结(当前行以及上部所有行) [C#] 'DataGridView1的上部2行固定 DataGridView1.Rows[2].Frozen = True; 指定单元格冻结(单元格所在行上部分所有行,列左侧所有列) [C#] DataGridView1[0, 0]. Frozen = True;
|
10. DataGridView列顺序变更可否设定
代码: [C#] 'DataGridView1的列的位置设定为允许改变 DataGridView1.AllowUserToOrderColumns = True 但是如果列冻结的情况下,冻结的部分不能变更到非冻结的部分。 变更后列位置取得 [C#] '取得列"Column1"现在的位置 Console.WriteLine(DataGridView1.Columns["Column1"].DisplayIndex) '列"Column1"移动到最前面 DataGridView1.Columns["Column1"].DisplayIndex = 0
|
11. DataGridView行复数选择
代码: 不可选择多行 [C#] 'DataGridView1不可选择多行 DataGridView1.MultiSelect = False 单元格选择的时候默认为选择整行 [C#] '单元格选择的时候默认为选择整行 DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect |
12. DataGridView选择的行、列、单元格取得
代码: [C#] '输出选择的单元格位置 Console.WriteLine("选择的单元格位置") foreach (DataGridViewCell c in DataGridView1.SelectedCells) { Console.WriteLine(c.ColumnIndex + "," + c.RowIndex); } '输出选择的行位置 Console.WriteLine("选择的行位置") foreach (DataGridViewRow r in dgvBeforeStep.SelectedRows) { Console.WriteLine(r.Index); } ''输出选择的列位置 foreach (DataGridViewColumn col in dgvBeforeStep.SelectedColumns) { Console.WriteLine(col.Index); } 指定行、列、单元格取得 [C#] '(0, 0)的选中 DataGridView1[0, 0].Selected = True 'Index为1的行选中 DataGridView1.Rows[1].Selected = True 'Index为2的列选中 DataGridView1.Columns[2].Selected = True
|
13. DataGridView指定单元格是否表示
代码: [C#] if (DataGridView1 [2,0].Displayed&& DataGridView1 [2,0].Visible) { DataGridView1.CurrentCell = DataGridView1[2,0]; } |
14. DataGridView表头部单元格取得
代码: [C#] 'DataGridView1第一列表头改变 DataGridView1.Columns[0].HeaderCell.Value = "第一列" 'DataGridView1第一行表头改变 DataGridView1.Rows[0].HeaderCell.Value = "第一行" 'DataGridView1左上角单元格值改变 DataGridView1.TopLeftHeaderCell.Value = "左上" |
15. DataGridView表头部单元格文字列设定
代码: 更改列Header表示文字列 [C#] 'DataGridView1改变第一列头部单元格文字 DataGridView1.Columns[0].HeaderText = "第一列" 更改行Header表示文字列 [C#] 'DataGridView1行的头部单元格为序号 for (int i = 0; i < DataGridView1.Rows.Count-1; i++) { DataGridView1.Rows[i].HeaderCell.Value=i.ToString(); } '行的宽度自动调节 DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders) 最左上Header单元格文字列 [C#] '修改最左上单元格 DataGridView1.TopLeftHeaderCell.Value = "/"
|
16. DataGridView选择的部分拷贝至剪贴板
代码: 拷贝模式设定 [C#] DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText 选中部分拷贝 [C#] Clipboard.SetDataObject(DataGridView1.GetClipboardContent()) |
17. DataGridView粘贴
代码: [C#] 代码 if (DataGridView1.CurrentCell.Value == null) { return; } int insertRowIndex = DataGridView1.CurrentCell.RowIndex; string pasteText=Clipboard.GetText(); if(string.IsNullOrEmpty(pasteText)) { return; } string[] lines=pasteText.Split('\r'); bool isHeader=true; foreach(string line in lines) { if(isHeader) { isHeader=false; } else { string[] vals=line.Split('\t'); if (vals.Length - 1 != DataGridView1.ColumnCount) { throw new ApplicationException("列数错误"); } DataGridViewRow row = DataGridView1.Rows[insertRowIndex]; row.HeaderCell.Value=vals[0]; for(int i=0;i { row.Cells[i].Value=vals[(i+1)]; } insertRowIndex+=1; } } |
18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息)
代码: C#] 指定单元格 DataGridView1[0, 0].ToolTipText = "指定单元格" 指定列 DataGridView1.Columns[0].ToolTipText = "指定列" 指定行 DataGridView1.Rows[0].HeaderCell.ToolTipText = "指定行" CellToolTipTextNeeded事件,在多个单元格使用相同的ToolTips的时候,可以用该事件,下例为显示当前单元格的行号和列号 [C#] 'CellToolTipTextNeeded事件 private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) { e.ToolTipText = e.RowIndex.ToString() + "," + e.ColumnIndex.ToString(); } |
19. 设置DataGridView的行头和文本居中
代码: 设置ColumnHeadersDafaultCellStyle属性的Alignment为MiddleCenter(行头居中) 设置DefalutCellStyle属性的Alignment为MiddleCenter(文本居中)
|
<责任编辑:计算机毕业设计网(http://www.xiaoniu168.com)>