### .NET 2.0 DataGridView 编程36计 #### ① 取得或者修改当前单元格的内容 在 DataGridView 控件中,当前单元格指的是具有焦点的单元格,可通过 `DataGridView.CurrentCell` 属性获取。如果当前没有单元格被选中,则返回 `Nothing`(VB.NET) 或 `null`(C#)。 - **获取当前单元格内容**: ```vbnet ' VB.NET 示例 Console.WriteLine(DataGridView1.CurrentCell.Value) ``` ```csharp // C# 示例 Console.WriteLine(DataGridView1.CurrentCell.Value); ``` - **获取当前单元格的列索引**: ```vbnet ' VB.NET 示例 Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex) ``` ```csharp // C# 示例 Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex); ``` - **获取当前单元格的行索引**: ```vbnet ' VB.NET 示例 Console.WriteLine(DataGridView1.CurrentCell.RowIndex) ``` ```csharp // C# 示例 Console.WriteLine(DataGridView1.CurrentCell.RowIndex); ``` 此外,可以使用 `DataGridView.CurrentCellAddress` 属性来获取当前单元格的具体位置,这有助于避免取消行的共享。 - **设置当前单元格**: ```vbnet ' VB.NET 示例 DataGridView1.CurrentCell = DataGridView1.Rows(0).Cells(0) ``` ```csharp // C# 示例 DataGridView1.CurrentCell = DataGridView1.Rows[0].Cells[0]; ``` #### ② 设定单元格只读 为了防止用户编辑某些单元格中的数据,可以将其设置为只读。此功能在保护数据完整性方面非常有用。 - **设置只读**: ```vbnet ' VB.NET 示例 DataGridView1.Rows(0).Cells(0).ReadOnly = True ``` ```csharp // C# 示例 DataGridView1.Rows[0].Cells[0].ReadOnly = true; ``` #### ③ 不显示最下面的新行 默认情况下,DataGridView 在底部会显示一个新行,允许用户添加新记录。若不想显示该行,可以通过以下方式实现: - **隐藏新行**: ```vbnet ' VB.NET 示例 DataGridView1.AllowUserToAddRows = False ``` ```csharp // C# 示例 DataGridView1.AllowUserToAddRows = false; ``` #### ④ 判断新增行 当启用允许用户添加行的功能时,可以通过判断新行来进行特定的数据处理。 - **判断新增行**: ```vbnet ' VB.NET 示例 If DataGridView1.Rows(DataGridView1.NewRowIndex).IsNewRow Then ' 处理新增行逻辑 End If ``` ```csharp // C# 示例 if (DataGridView1.Rows[DataGridView1.NewRowIndex].IsNewRow) { // 处理新增行逻辑 } ``` #### ⑤ 行的用户删除操作的自定义 在某些场景下,可能希望自定义用户删除行的行为,例如确认对话框或特殊处理等。 - **自定义删除行为**: ```csharp // C# 示例 private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { // 自定义删除逻辑 if (!ConfirmDelete(e.Row)) { e.Cancel = true; // 取消删除 } } private bool ConfirmDelete(DataGridViewRow row) { return MessageBox.Show("确定删除这一行吗?", "警告", MessageBoxButtons.YesNo) == DialogResult.Yes; } ``` #### ⑥ 行、列的隐藏和删除 有时可能需要隐藏或删除行或列,以适应不同的显示需求或清理不必要的数据。 - **隐藏/删除行**: ```vbnet ' VB.NET 示例 DataGridView1.Rows(0).Visible = False ' 隐藏行 DataGridView1.Rows.RemoveAt(0) ' 删除行 ``` ```csharp // C# 示例 DataGridView1.Rows[0].Visible = false; // 隐藏行 DataGridView1.Rows.RemoveAt(0); // 删除行 ``` - **隐藏/删除列**: ```vbnet ' VB.NET 示例 DataGridView1.Columns(0).Visible = False ' 隐藏列 DataGridView1.Columns.RemoveAt(0) ' 删除列 ``` ```csharp // C# 示例 DataGridView1.Columns[0].Visible = false; // 隐藏列 DataGridView1.Columns.RemoveAt(0); // 删除列 ``` #### ⑦ 禁止列或者行的 Resize 为了避免用户调整列宽或行高,可以禁止它们的 Resize 功能。 - **禁止 Resize**: ```vbnet ' VB.NET 示例 DataGridView1.AllowUserToResizeColumns = False DataGridView1.AllowUserToResizeRows = False ``` ```csharp // C# 示例 DataGridView1.AllowUserToResizeColumns = false; DataGridView1.AllowUserToResizeRows = false; ``` #### ⑧ 列宽和行高以及列头的高度和行头的宽度的自动调整 为了让表格更美观或适应数据长度,可以自动调整列宽、行高以及列头和行头的大小。 - **自动调整列宽**: ```vbnet ' VB.NET 示例 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells ``` ```csharp // C# 示例 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; ``` - **自动调整行高**: ```vbnet ' VB.NET 示例 DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells ``` ```csharp // C# 示例 DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; ``` #### ⑨ 冻结列或行 冻结功能可以让某些列或行保持固定位置,即使滚动其他部分也不会移动这些列或行。 - **冻结第一列**: ```vbnet ' VB.NET 示例 DataGridView1.Columns(0).Frozen = True ``` ```csharp // C# 示例 DataGridView1.Columns[0].Frozen = true; ``` - **冻结第一行**: ```vbnet ' VB.NET 示例 DataGridView1.Rows(0).Frozen = True ``` ```csharp // C# 示例 DataGridView1.Rows[0].Frozen = true; ``` #### ⑩ 列顺序的调整 在设计界面时,可能需要重新排序列以更好地展示数据。 - **调整列顺序**: ```vbnet ' VB.NET 示例 DataGridView1.Columns.Move(0, 2) ' 将第0列移动到第2列的位置 ``` ```csharp // C# 示例 DataGridView1.Columns.Move(0, 2); // 将第0列移动到第2列的位置 ``` #### ⑪ 行头列头的单元格 行头和列头的单元格可以用于显示额外的信息或导航目的。 - **设置行头列头单元格**: ```vbnet ' VB.NET 示例 DataGridView1.RowHeadersWidth = 50 ' 设置行头宽度 DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter ' 设置列头居中对齐 ``` ```csharp // C# 示例 DataGridView1.RowHeadersWidth = 50; // 设置行头宽度 DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; // 设置列头居中对齐 ``` #### ⑫ 剪切板的操作 通过支持剪切板操作,可以增强用户的交互体验,如复制粘贴数据等。 - **复制选定单元格到剪切板**: ```vbnet ' VB.NET 示例 Dim selectedCells As DataGridViewSelectedCellCollection = DataGridView1.SelectedCells Dim text As String = "" For Each cell As DataGridViewCell In selectedCells text += cell.Value.ToString() & vbTab Next Clipboard.SetText(text) ``` ```csharp // C# 示例 DataGridViewSelectedCellCollection selectedCells = DataGridView1.SelectedCells; string text = ""; foreach (DataGridViewCell cell in selectedCells) { text += cell.Value.ToString() + "\t"; } Clipboard.SetText(text); ``` #### ⑬ 单元格的 ToolTip 的设置 ToolTip 可以为单元格提供额外的信息提示。 - **设置 ToolTip**: ```vbnet ' VB.NET 示例 DataGridView1.Rows(0).Cells(0).ToolTipText = "这是一个示例单元格" ``` ```csharp // C# 示例 DataGridView1.Rows[0].Cells[0].ToolTipText = "这是一个示例单元格"; ``` #### ⑭ 右键菜单(ContextMenuStrip)的设置 右键菜单可以提供更多的交互选项,如编辑、删除等。 - **设置 ContextMenuStrip**: ```vbnet ' VB.NET 示例 DataGridView1.ContextMenuStrip = contextMenuStrip1 ``` ```csharp // C# 示例 DataGridView1.ContextMenuStrip = contextMenuStrip1; ``` #### ⑮ 单元格的边框、网格线样式的设定 调整边框和网格线样式可以改善表格的整体外观。 - **设置边框样式**: ```vbnet ' VB.NET 示例 DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.Single ``` ```csharp // C# 示例 DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.Single; ``` - **设置网格线样式**: ```vbnet ' VB.NET 示例 DataGridView1.GridColor = Color.Gray DataGridView1.GridStyle = DataGridViewGridStyle.Dashed ``` ```csharp // C# 示例 DataGridView1.GridColor = Color.Gray; DataGridView1.GridStyle = DataGridViewGridStyle.Dashed; ``` #### ⑯ 单元格表示值的设定 为了更好地呈现数据,可以自定义单元格的表示形式。 - **设置单元格显示值**: ```vbnet ' VB.NET 示例 DataGridView1.Rows(0).Cells(0).Value = "示例值" ``` ```csharp // C# 示例 DataGridView1.Rows[0].Cells[0].Value = "示例值"; ``` #### ⑰ 用户输入时,单元格输入值的设定 对于用户输入的数据,可以预先设置一些默认值或格式化规则。 - **设置用户输入值**: ```vbnet ' VB.NET 示例 DataGridView1.Rows(0).Cells(0).Value = "请输入内容" DataGridView1.Rows(0).Cells(0).Style.Format = "yyyy-MM-dd" ' 日期格式 ``` ```csharp // C# 示例 DataGridView1.Rows[0].Cells[0].Value = "请输入内容"; DataGridView1.Rows[0].Cells[0].Style.Format = "yyyy-MM-dd"; // 日期格式 ``` #### ⑱ 设定新加行的默认值 当用户添加新行时,可以为其设置默认值以简化输入过程。 - **设置新行默认值**: ```vbnet ' VB.NET 示例 DataGridView1.NewRow.Cells(0).Value = "新值" ``` ```csharp // C# 示例 DataGridView1.NewRow.Cells[0].Value = "新值"; ``` 以上便是关于 .NET 2.0 中 DataGridView 控件的一些常用技巧。通过灵活运用这些方法,开发者可以轻松地创建功能强大且易于使用的表格界面。
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助