Datagridview的几个常见方法
2017-12-30 17:53
507 查看
一、
DataGridView 取得或者修改当前单元格的内容:当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候,返回Nothing(C#是null)
// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex); // 取得当前单元格的行 Index Console.WriteLine(DataGridView1.CurrentCell.RowIndex);
另外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的行:DataGridView.CurrentCellAddress.Y 和列: DataGridView.CurrentCellAddress.X 。这对于避免取消共享行的共享非常有用。
当前的单元格可以通过设定 DataGridView 对象的 CurrentCell 来改变。可以通过 CurrentCell 来设定DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。
// 设定 (0, 0) 为当前单元格 DataGridView1.CurrentCell = DataGridView1[0, 0];
二、
DataGridView 不显示最下面的新行:通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。
// 设置用户不能手动给 DataGridView1 添加新行 DataGridView1.AllowUserToAddRows = false;
但是,可以通过程序: DataGridViewRowCollection.Add 为 DataGridView 追加新行。
补足: 如果 DataGridView 的 DataSource 绑定的是 DataView, 还可以通过设置 DataView.AllowAdd
属性为 False 来达到同样的效果。
DataGridView 判断新增行:
DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行就是新追加的行(*行)。使用 DataGridViewRow.IsNewRow 属性可以判断哪一行是新追加的行。另外,通过DataGridView.NewRowIndex 可以获取新行的行序列号。在没有新行的时候,NewRowIndex = -1。DataGridView 行的用户删除操作的自定义:
1) 无条件的限制行删除操作。默认时,DataGridView 是允许用户进行行的删除操作的。如果设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时, 用户的行删除操作就被禁止了。
// 禁止DataGridView1的行删除操作。 DataGridView1.AllowUserToDeleteRows = false;
但是,通过 DataGridViewRowCollection.Remove 还是可以进行行的删除。
补足: 如果 DataGridView 绑定的是 DataView 的话,通过 DataView.AllowDelete 也可以控制行的删除。
2) 行删除时的条件判断处理。
用户在删除行的时候,将会引发 DataGridView.UserDeletingRow 事件。 在这个事件里,可以判断条件并取消删除操作。
// DataGridView1 的 UserDeletingRow 事件 private void DataGridView1_UserDeletingRow( object sender, DataGridViewRowCancelEventArgs e) { // 删除前的用户确认。 if (MessageBox.Show("确认要删除该行数据吗?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { // 如果不是 OK,则取消。 e.Cancel = true; } }
DataGridView 行、列的隐藏和删除:
1) 行、列的隐藏// DataGridView1的第一列隐藏 DataGridView1.Columns[0].Visible = false; // DataGridView1的第一行隐藏 DataGridView1.Rows[0].Visible = false;
2) 行头、列头的隐藏
// 列头隐藏 DataGridView1.ColumnHeadersVisible = false; // 行头隐藏 DataGridView1.RowHeadersVisible = false;
3) 行和列的删除
' 删除名为"Column1"的列 DataGridView1.Columns.Remove("Column1"); ' 删除第一列 DataGridView1.Columns.RemoveAt(0); ' 删除第一行 DataGridView1.Rows.RemoveAt(0);
4) 删除选中行
foreach (DataGridViewRow r in DataGridView1.SelectedRows) { if (!r.IsNewRow) { DataGridView1.Rows.Remove(r); } }
DataGridView 禁止列或者行的Resize:
1) 禁止所有的列或者行的Resize// 禁止用户改变DataGridView1的所有列的列宽 DataGridView1.AllowUserToResizeColumns = false; //禁止用户改变DataGridView1の所有行的行高 DataGridView1.AllowUserToResizeRows = false;
但是可以通过 DataGridViewColumn.Width 或者 DataGridViewRow.Height 属性设定列宽和行高。
2) 禁止指定行或者列的Resize
// 禁止用户改变DataGridView1的第一列的列宽 DataGridView1.Columns[0].Resizable = DataGridViewTriState.False; // 禁止用户改变DataGridView1的第一列的行宽 DataGridView1.Rows[0].Resizable = DataGridViewTriState.False;
三、
DataGridView 冻结列或行
1) 列冻结DataGridViewColumn.Frozen 属性为 True 时, 该列左侧的所有列被固定,横向滚动时固定列不随滚动条滚动而左右移动。这对于重要列固定显示很有用。
// DataGridView1的左侧2列固定 DataGridView1.Columns[1].Frozen = true; 但是,DataGridView.AllowUserToOrderColumns = True 时,固定列不能移动到非固定列,反之亦然。
2) 行冻结
DataGridViewRow.Frozen 属性为 True 时, 该行上面的所有行被固定, 纵向滚动时固定行不随滚动条滚动而上下移动。
// DataGridView1 的上3行固定 DataGridView1.Rows[2].Frozen = true;
DataGridView 列顺序的调整
设定 DataGridView 的 AllowUserToOrderColumns 为 True 的时候, 用户可以自由调整列的顺序。当用户改变列的顺序的时候,其本身的 Index 不会改变,但是 DisplayIndex 改变了。你也可以通过程序改变 DisplayIndex 来改变列的顺序。列顺序发生改变时会引发 ColumnDisplayIndexChanged 事件:
// DataGridView1的ColumnDisplayIndexChanged事件处理方法 private void DataGridView1_ColumnDisplayIndexChanged(object sender, DataGridViewColumnEventArgs e) { Console.WriteLine("{0} 的位置改变到 {1} ", e.Column.Name, e.Column.DisplayIndex); }
DataGridView 行头列头的单元格
// 改变DataGridView1的第一列列头内容 DataGridView1.Columns[0].HeaderCell.Value = "第一列"; // 改变DataGridView1的第一行行头内容 DataGridView1.Rows[0].HeaderCell.Value = "第一行"; // 改变DataGridView1的左上头部单元内容 DataGridView1.TopLeftHeaderCell.Value = "左上"; 另外你也可以通过 HeaderText 来改变他们的内容。
相关文章推荐
- python由于版本问题而出现的几个常见Warning及解决方法
- Android操作SQLite的几个常见方法
- C#初学者对Equals方法的几个常见误解
- Android开发中几个常见错误处理方法
- Web开发常见的几个漏洞解决方法
- Throwable的几个常见方法
- Windows 7假死的几个常见情况以及解决方法
- nginx的error.log日志常见的几个错误解决方法
- Hibernate的几个常见异常及解决方法
- Web开发常见的几个漏洞解决方法
- Web开发常见的几个漏洞解决方法
- Web开发常见的几个漏洞解决方法
- Web开发常见的几个漏洞解决方法
- Hibernate的几个常见异常及解决方法
- Web开发常见的几个漏洞解决方法
- android开发中几个常见的错误及解决方法
- CityEngine三维建模几个常见问题解决方法(1)
- Web开发常见的几个漏洞解决方法
- Web开发常见的几个漏洞解决方法
- 分享一下Mysql常见的几个错误问题及解决方法