datagridview 各种用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
datagridview 各种用法
1. 取得或者修改当前单元格的内容 2. 设定单元格只读 3. 不显示最下面的新行 4. 判断新增行 5. 行的用户删除操作的自定义 6. 行、列的隐藏和删除 7. 禁止列或者行的Resize 8. 列宽和行高以及列头的高度和行头的宽度的自动调整 9. 冻结列或行 10. 列顺序的调整 11. 行头列头的单元格 12. 剪切板的操作 13. 单元格的ToolTip的设置 14. 右键菜单(ContextMenuStrip)的设置 15,单元格的边框、 网格线样式的设定 16. 单元格表示值的设定 17. 用户输入时,单元格输入值的设定 18. 设定新加行的默认值 19. DataGridView里的Column的背景颜色 1, DataGridView取得或者修改当前单元格的内容:
另外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定 单元格所在的行:DataGridView.CurrentCellAddress.Y 和列: DataGridView.CurrentCellAddress.X 。这对于避免取消共享行的共享非常有用。 当前的单元 格可以通过设定 DataGridView 对象的 CurrentCell 来改变。可以通过 CurrentCell 来设定 DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。 [] ' 设定 (0, 0) 为当前单元格 DataGridView1.CurrentCell = DataGridView1(0, 0) [C#] // 设定 (0, 0) 为当前单元格 DataGridView1.CurrentCell = DataGridView1[0, 0];
Dim dgv As DataGridView = CType(sender, DataGridView) ' 是否可以进行编辑的条件检查 If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _ Not CBool(dgv("Column2", e.RowIndex).Value) Then ' 取消编辑 e.Cancel = True End If End Sub [C#] // CellBeginEdit 事件处理方法 private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) {
4,DataGridView 判断新增行:
DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下, DataGridView的最后一行就是新追加的行(*行)。使用 DataGridViewRow.IsNewRow 属性可以判 断哪一行是新追加的行。另外,通过DataGridView.NewRowIndex 可以获取新行的行序列号。在没 有新行的时候,NewRowIndex = -1。
// 取消编辑 e.Cancel = true; } } 3,DataGridView 不显示最下面的新行: 通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。如果不想让用户 新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。 [] ' 设置用户不能手动给 DataGridView1 添加新行 DataGridView1.AllowUserToAddRows = False [C#] // 设置用户不能手动给 DataGridView1 添加新行 DataGridView1.AllowUserToAddRows = false;
如果需要,DataGridView 内某个单元格不可编辑, 那么只要: [] ' 设置 DataGridView1 的第2列整列单元格为只读 DataGridView1.Columns(1).ReadOnly = True ' 设置 DataGridView1 的第3行整行单元格为只读 DataGridView1.Rows(2).ReadOnly = True ' 设置 DataGridView1 的[0,0]单元格为只读 DataGridView1(0, 0).ReadOnly = True [C#] // 设置 DataGridView1 的第2列整列单元格为只读 DataGridView1.Columns[1].ReadOnly = true; // 设置 DataGridView1 的第3行整行单元格为只读 DataGridView1.Rows[2].ReadOnly = true; // 设置 DataGridView1 的[0,0]单元格为只读 DataGridView1[0, 0].ReadOnly = true; 2) 使用 EditMode 属性
但是,可以通过程序: DataGridViewRowCollection.Add 为 DataGridView 追加新行。 补足: 如果 DataGridView 的 DataSource 绑定的是 DataView, 还可以通过设置 DataView.AllowAdd 属性为 False 来达到同样的效果。
DataGridView.EditMode 属性被设置为 DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编辑单元格的内容了。但 是可以通过程序,调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑。 [] DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically [C#] DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically; 3) 根据条件设定单元格的不可编辑状态当一个一个的通过单元格坐标设定单元格 ReadOnly 属性 的方法太麻烦的时候,你可以通过 CellBeginEdit 事件来取消单元格的编辑。 [] 'CellBeginEdit 事件处理方法 Private Sub DataGridView1_CellBeginEdit(ByVal sender As Object, _ ByVal e As DataGridViewCellCancelEventArgs) _ Handles DataGridView1.CellBeginEdit
int row = this.dataGridView1.CurrentRow.Index - 1; if (row < 0) row = this.dataGridView1.RowCount - 1; this.dataGridView1.CurrentCell = this.dataGridView1[0, row]; } * 注意: this.dataGridView 的索引器的参数是: columnIndex, rowIndex 或是 columnName, rowIndex 这与习惯不同。 2, DataGridView 设定单元格只读: 1) 使用 ReadOnly 属性 如果需要,DataGridView 内所有单元格都不可编辑, 那么只要: [] ' 设置 DataGridView1 为只读 DataGridView1.ReadOnly = True [C#] // 设置 DataGridView1 为只读 DataGridView1.ReadOnly = true; 此时,用户的新增行操作和删除行操作也被屏蔽了。
DataGridView dgv = (DataGridView)sender; //是否可以进行编辑的条件检查 if (dgv.Columns[e.ColumnIndex].Name == "Column1" && !(bool)dgv["Column2", e.RowIndex].Value) {
在整行选中模式开启时,你也可以通过 CurrentCell 来设定选定行。 /// <summary> /// 向下遍历 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button4_Click(object sender, EventArgs e) ... {
当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell属性取得。如果当前单元格不存在的时候,返回Nothing(C#是null) [] ' 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value)
[]
If DataGridView1.CurrentRow.IsNewRow Then
Console.WriteLine("当前行为新追加行。")
Else
Console.WriteLine("当前行不是新追加行。")
End If
5,ห้องสมุดไป่ตู้ataGridView 行的用户删除操作的自定义:
1) 无条件的限制行删除操作。默认时,DataGridView 是允许用户进行行的删除操作的。如果设 置 DataGridView对象的AllowUserToDeleteRows属性为 False 时,用户的行删除操作就被禁止 了。
int row = this.dataGridView1.CurrentRow.Index + 1; if (row > this.dataGridView1.RowCount - 1) row = 0; this.dataGridView1.CurrentCell = this.dataGridView1[0, row]; } /// <summary> /// 向上遍历 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button5_Click(object sender, EventArgs e) ... {
' 取得当前单元格的列 Index Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex) ' 取得当前单元格的行 Index Console.WriteLine(DataGridView1.CurrentCell.RowIndex) [C#] // 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex); // 取得当前单元格的行 Index Console.WriteLine(DataGridView1.CurrentCell.RowIndex);
[]
' 禁止DataGridView1的行删除操作。
DataGridView1.AllowUserToDeleteRows = False
[C#]
// 禁止DataGridView1的行删除操作。
DataGridView1.AllowUserToDeleteRows = false;
相关文档
最新文档