DataGridView在vbnet中的操作技巧.docx
- 文档编号:8571034
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:8
- 大小:17.70KB
DataGridView在vbnet中的操作技巧.docx
《DataGridView在vbnet中的操作技巧.docx》由会员分享,可在线阅读,更多相关《DataGridView在vbnet中的操作技巧.docx(8页珍藏版)》请在冰豆网上搜索。
DataGridView在vbnet中的操作技巧
DataGridView在中的操作技巧
DataGridView在中的操作技巧目录:
1、 取得或者修改当前单元格的内容
2、设定单元格只读
3、 不显示最下面的新行
4、 判断新增行
5、 行的用户删除操作的自定义
6、 行、列的隐藏和删除
7、 禁止列或者行的Resize
8、 列宽和行高以及列头的高度和行头的宽度的自动调整
9、 冻结列或行
10、 列顺序的调整
11、 行头列头的单元格
12、 剪切板的操作
13、 单元格的ToolTip的设置
14、 右键菜单(ContextMenuStrip)的设置
15、 单元格的边框、网格线样式的设定
16、 单元格表示值的设定
17、 用户输入时,单元格输入值的设定
18、 设定新加行的默认值
1、 DataGridView取得或者修改当前单元格的内容:
当前单元格指的是DataGridView焦点所在的单元格,它可以通过DataGridView对象的CurrentCell属性取得。
如果当前单元格不存在的时候,返回Nothing(C#是null)
[VB.NET]
'取得当前单元格内容MessageBox.Show(DataGridView1.CurrentCell.Value)
'取得当前单元格的列Index
MessageBox.Show(DataGridView1.CurrentCell.ColumnIndex)
'取得当前单元格的行Index
MessageBox.Show(DataGridView1.CurrentCell.RowIndex)
另外,使用DataGridView.CurrentCellAddress属性(而不是直接访问单元格)来确定单元格所在的行:
DataGridView.CurrentCellAddress.Y和列:
DataGridView.CurrentCellAddress.X。
这对于避免取消共享行的共享非常有用。
当前的单元格可以通过设定DataGridView对象的CurrentCell来改变。
可以通过CurrentCell来设定
DataGridView的激活单元格。
将CurrentCell设为Nothing(null)可以取消激活的单元格。
[VB.NET]
'设定(0,0)为当前单元格
DataGridView1.CurrentCell=DataGridView1(0,0)
--------------------------------------------------------------------------------
2、 DataGridView设定单元格只读:
1)使用ReadOnly属性
如果希望,DataGridView内所有单元格都不可编辑,那么只要:
[VB.NET]
'设置DataGridView1为只读
DataGridView1.ReadOnly=True
如果希望,DataGridView内某个单元格不可编辑,那么只要:
[VB.NET]
'设置DataGridView1的第2列整列单元格为只读
DataGridView1.Columns
(1).ReadOnly=True
'设置DataGridView1的第3行整行单元格为只读
DataGridView1.Rows
(2).ReadOnly=True
'设置DataGridView1的[0,0]单元格为只读
DataGridView1(0,0).ReadOnly=True
2)使用EditMode属性
DataGridView.EditMode属性被设置为DataGridViewEditMode.EditProgrammatically时,用户就不能手动编辑单元格的内容了。
但是可以通过程序,调用DataGridView.BeginEdit方法,使单元格进入编辑模式进行编辑。
[VB.NET]
DataGridView1.EditMode=DataGridViewEditMode.EditProgrammatically
3)根据条件设定单元格的不可编辑状态
当一个一个的通过单元格坐标设定单元格ReadOnly属性的方法太麻烦的时候,你可以通过CellBeginEdit事件来取消单元格的编辑。
[VB.NET]
'CellBeginEdit事件处理方法
PrivateSubDataGridView1_CellBeginEdit(ByValsenderAsObject,_
ByValeAsDataGridViewCellCancelEventArgs)_
HandlesDataGridView1.CellBeginEdit
DimdgvAsDataGridView=CType(sender,DataGridView)
'是否可以进行编辑的条件检查
Ifdgv.Columns(e.ColumnIndex).Name="Column1"AndAlso_
NotCBool(dgv("Column2",e.RowIndex).Value)Then
'取消编辑
e.Cancel=True
EndIf
EndSub
--------------------------------------------------------------------------------
3、 DataGridView不显示最下面的新行:
通常DataGridView的最下面一行是用户新追加的行(行头显示*)。
如果不想让用户新追加行即不想显示该新行,可以将DataGridView对象的AllowUserToAddRows属性设置为False。
[VB.NET]
'设置用户不能手动给DataGridView1添加新行
DataGridView1.AllowUserToAddRows=False
补足:
如果DataGridView的DataSource绑定的是DataView,还可以通过设置DataView.AllowAdd
属性为False来达到同样的效果。
--------------------------------------------------------------------------------
4、 DataGridView判断新增行:
DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行就是新追加的行(*行)。
使用DataGridViewRow.IsNewRow属性可以判断哪一行是新追加的行。
另外,通过DataGridView.NewRowIndex可以获取新行的行序列号。
在没有新行的时候,NewRowIndex=-1。
[VB.NET]
IfDataGridView1.CurrentRow.IsNewRowThen
Console.WriteLine("当前行为新追加行。
")
Else
Console.WriteLine("当前行不是新追加行。
")
EndIf
--------------------------------------------------------------------------------
5、 DataGridView行的用户删除操作的自定义:
1)无条件的限制行删除操作。
默认时,DataGridView是允许用户进行行的删除操作的。
如果设置DataGridView对象的AllowUserToDeleteRows属性为False时,用户的行删除操作就被禁止了。
[VB.NET]
'禁止DataGridView1的行删除操作。
DataGridView1.AllowUserToDeleteRows=False
但是,通过DataGridViewRowCollection.Remove还是可以进行行的删除。
补足:
如果DataGridView绑定的是DataView的话,通过DataView.AllowDelete也可以控制行的删除。
2)行删除时的条件判断处理。
用户在删除行的时候,将会引发DataGridView.UserDeletingRow事件。
在这个事件里,可以判断条件并取消删除操作。
[VB.NET]
'DataGridView1的UserDeletingRow事件
PrivateSubDataGridView1_UserDeletingRow(ByValsenderAsObject,_
ByValeAsDataGridViewRowCancelEventArgs)_
HandlesDataGridView1.UserDeletingRow
'删除前的用户确认。
IfMessageBox.Show("确认要删除该行数据吗?
","删除确认",_
MessageBoxButtons.OKCancel,MessageBoxIcon.Question)<>_
Windows.Forms.DialogResult.OKThen
'如果不是OK,则取消。
e.Cancel=True
EndIf
EndSub
--------------------------------------------------------------------------------
6、 DataGridView行、列的隐藏和删除:
1)行、列的隐藏
[VB.NET]
'DataGridView1的第一列隐藏
DataGridView1.Columns(0).Visible=False
'DataGridView1的第一行隐藏
DataGridView1.Rows(0).Visible=False
2)行头、列头的隐藏
[VB.NET]
'列头隐藏
DataGridView1.ColumnHeadersVisible=False
'行头隐藏
DataGridView1.RowHeadersVisible=False
3)行和列的删除
[VB.NET]
'删除名为"Column1"的列
DataGridView1.Columns.Remove("Column1")
'删除第一列
DataGridView1.Columns.RemoveAt(0)
'删除第一行
DataGridView1.Rows.RemoveAt(0)
4)删除选中行
[VB.NET]
ForEachrAsDataGridViewRowInDataGridView1.SelectedRows
IfNotr.IsNewRowThen
DataGridView1.Rows.Remove(r)
EndIf
Next
--------------------------------------------------------------------------------
7、DataGridView禁止列或者行的Resize:
1)禁止所有的列或者行的Resize
[VB.NET]
'禁止用户改变DataGridView1的所有列的列宽
DataGridView1.AllowUserToResizeColumns=False
'禁止用户改变DataGridView1の所有行的行高
DataGridView1.AllowUserToResizeRows=False
2)禁止指定行或者列的Resize
[VB.NET]
'禁止用户改变DataGridView1的第一列的列宽
DataGridView1.Columns(0).Resizable=DataGridViewTriState.False
'禁止用户改变DataGridView1的第一列的行宽
DataGridView1.Rows(0).Resizable=DataGridViewTriState.False
关于NoSet
当Resizable属性设为DataGridViewTriState.NotSet时,实际上会默认以DataGridView的AllowUserToResizeColumns和AllowUserToResizeRows的属性值进行设定。
比如:
DataGridView.AllowUserToResizeColumns=False且Resizable是NoSet设定时,Resizable=False。
判断Resizable是否是继承设定了DataGridView的AllowUserToResizeColumns和AllowUserToResizeRows的属性值,可以根据State属性判断。
如果State属性含有ResizableSet,那么说明没有继承设定。
3)列宽和行高的最小值的设定
[VB.NET]
'第一列的最小列宽设定为100
DataGridView1.Columns(0).MinimumWidth=100
'第一行的最小行高设定为50
DataGridView1.Rows(0).MinimumHeight=50
4)禁止用户改变行头的宽度以及列头的高度
[VB.NET]
'禁止用户改变列头的高度
DataGridView1.ColumnHeadersHeightSizeMode=_
DataGridViewColumnHeadersHeightSizeMode.DisableResizing
'禁止用户改变行头的宽度
DataGridView1.RowHeadersWidthSizeMode=_
DataGridViewRowHeadersWidthSizeMode.EnableResizing
--------------------------------------------------------------------------------
8、DataGridView列宽和行高自动调整的设定:
1)设定行高和列宽自动调整
[VB.NET]
'设定包括Header和所有单元格的列宽自动调整
DataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.AllCells
'设定包括Header和所有单元格的行高自动调整
DataGridView1.AutoSizeRowsMode=DataGridViewAutoSizeRowsMode.AllCells
2)指定列或行自动调整
[VB.NET]
'第一列自动调整
DataGridView1.Columns(0).AutoSizeMode=_
DataGridViewAutoSizeColumnMode.DisplayedCells
3)设定列头的高度和行头的宽度自动调整[VB.NET]
'设定列头的宽度可以自由调整
DataGridView1.ColumnHeadersHeightSizeMode=_
DataGridViewColumnHeadersHeightSizeMode.AutoSize
'设定行头的宽度可以自由调整
DataGridView1.RowHeadersWidthSizeMode=_
DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
4)随时自动调整
a,临时的,让列宽自动调整,这和指定AutoSizeColumnsMode属性一样。
[VB.NET]
'让DataGridView1的所有列宽自动调整一下。
DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
'让DataGridView1的第一列的列宽自动调整一下。
DataGridView1.AutoResizeColumn(0,DataGridViewAutoSizeColumnMode.AllCells)
b,临时的,让行高自动调整
[VB.NET]
'让DataGridView1的所有行高自动调整一下。
DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells)
'让DataGridView1的第一行的行高自动调整一下。
DataGridView1.AutoResizeRow(0,DataGridViewAutoSizeRowMode.AllCells)
c,临时的,让行头和列头自动调整
[VB.NET]
'列头高度自动调整
DataGridView1.AutoResizeColumnHeadersHeight()
'行头宽度自动调整
DataGridView1.AutoResizeRowHeadersWidth(_
DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
关于性能:
通过AutoSizeColumnsMode或者AutoSizeRowsMode属性所指定的单元格进行自动调整时,如果调整次数过于多那么将可能导致性能下降,尤其是在行和列数比较多的情况下。
在这时用DisplayedCells代替AllCells能减少非所见的单元格的调整,从而提高性能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DataGridView vbnet 中的 操作 技巧
![提示](https://static.bdocx.com/images/bang_tan.gif)