- 浏览: 1068000 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
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] ' 取得当前单元格内容 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) 可以取消激活的单元格。 [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 事件处理方法 Private Sub DataGridView1_CellBeginEdit(ByVal sender As Object, _ ByVal e As DataGridViewCellCancelEventArgs) _ Handles DataGridView1.CellBeginEdit 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
--------------------------------------------------------------------------------
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] If DataGridView1.CurrentRow.IsNewRow Then Console.WriteLine("当前行为新追加行。") Else Console.WriteLine("当前行不是新追加行。") End If --------------------------------------------------------------------------------
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 事件 Private Sub DataGridView1_UserDeletingRow(ByVal sender As Object, _ ByVal e As DataGridViewRowCancelEventArgs) _ Handles DataGridView1.UserDeletingRow ' 删除前的用户确认。 If MessageBox.Show("确认要删除该行数据吗?", "删除确认", _ MessageBoxButtons.OKCancel, MessageBoxIcon.Question) <> _ Windows.Forms.DialogResult.OK Then ' 如果不是 OK,则取消。 e.Cancel = True End If End Sub
--------------------------------------------------------------------------------
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] For Each r As DataGridViewRow In DataGridView1.SelectedRows If Not r.IsNewRow Then DataGridView1.Rows.Remove(r) End If 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 能减少非所见的单元格的调整,从而提高性能。
--------------------------------------------------------------------------------
9、 DataGridView 冻结列或行
1) 列冻结 DataGridViewColumn.Frozen 属性为 True 时, 该列左侧的所有列被固定, 横向滚动时固定列不随滚动条滚动而左右移动。这对于重要列固定显示很有用。 [VB.NET] ' DataGridView1的左侧2列固定 DataGridView1.Columns(1).Frozen = True
2) 行冻结 DataGridViewRow.Frozen 属性为 True 时, 该行上面的所有行被固定, 纵向滚动时固定行不随滚动条滚动而上下移动。 [VB.NET] ' DataGridView1 的上3行固定 DataGridView1.Rows(2).Frozen = True
--------------------------------------------------------------------------------
10、 DataGridView 列顺序的调整 设定 DataGridView 的 AllowUserToOrderColumns 为 True 的时候, 用户可以自由调整列的顺序。 当用户改变列的顺序的时候,其本身的 Index 不会改变,但是 DisplayIndex 改变了。你也可以通过程序改变 DisplayIndex 来改变列的顺序。 列顺序发生改变时会引发 ColumnDisplayIndexChanged 事件: [VB.NET] ' DataGridView1的ColumnDisplayIndexChanged事件处理方法 Private Sub DataGridView1_ColumnDisplayIndexChanged(ByVal sender As Object, _ ByVal e As DataGridViewColumnEventArgs) _ Handles DataGridView1.ColumnDisplayIndexChanged Console.WriteLine("{0} 的位置改变到 {1} 。", _ e.Column.Name, e.Column.DisplayIndex) End Sub
--------------------------------------------------------------------------------
11、 DataGridView 行头列头的单元格 [VB.NET] ' DataGridView1的第一列列头内容 DataGridView1.Columns(0).HeaderCell.Value = "第一列" ' DataGridView1的第一行行头内容 DataGridView1.Rows(0).HeaderCell.Value = "第一行" ' DataGridView1的左上头部单元内容 DataGridView1.TopLeftHeaderCell.Value = "左上" [VB.NET] ' 改变DataGridView1的第一列列头内容 DataGridView1.Columns(0).HeaderText = "第一列"
--------------------------------------------------------------------------------
12、 DataGridView 剪切板的操作 DataGridView.ClipboardCopyMode 属性被设定为 DataGridViewClipboardCopyMode.Disable 以外的情况时,「Ctrl + C」 按下的时候,被选择的单元格的内容会拷贝到系统剪切板内。格式有: Text, UnicodeText,Html, CommaSeparatedValue。可以直接粘贴到 Excel 内。 ClipboardCopyMode 还可以设定 Header部分是否拷贝: EnableAlwaysIncludeHeaderText 拷贝Header部分、EnableWithoutHeaderText 则不拷贝。默认是 EnableWithAutoHeaderText , Header 如果选择了的话,就拷贝。
1) 编程方式实现剪切板的拷贝 Clipboard.SetDataObject(DataGridView1.GetClipboardContent())
2) DataGridView 的数据粘贴 实现剪切板的拷贝比较容易,但是实现 DataGridView 的直接粘贴就比较难了。「Ctrl + V」按下进行粘贴时,DataGridView 没有提供方法,只能自己实现。 以下,是粘贴时简单的事例代码,将拷贝数据粘贴到以选择单元格开始的区域内。 [VB.NET] ' 当前单元格是否选择的判断 If DataGridView1.CurrentCell Is Nothing Then Return End If Dim insertRowIndex As Integer = DataGridView1.CurrentCell.RowIndex ' 获取剪切板的内容,并按行分割 Dim pasteText As String = Clipboard.GetText() If String.IsNullOrEmpty(pasteText) Then Return End If pasteText = pasteText.Replace(vbCrLf, vbLf) pasteText = pasteText.Replace(vbCr, vbLf) pasteText.TrimEnd(New Char() {vbLf}) Dim lines As String() = pasteText.Split(vbLf) Dim isHeader As Boolean = True For Each line As String In lines ' 是否是列头 If isHeader Then isHeader = False Else ' 按 Tab 分割数据 Dim vals As String() = line.Split(ControlChars.Tab) ' 判断列数是否统一 If vals.Length - 1 <> DataGridView1.ColumnCount Then Throw New ApplicationException("粘贴的列数不正确。") End If Dim row As DataGridViewRow = DataGridView1.Rows(insertRowIndex) ' 行头设定 row.HeaderCell.Value = vals(0) ' 单元格内容设定 Dim i As Integer For i = 0 To row.Cells.Count - 1 row.Cells(i).Value = vals((i + 1)) Next i ' DataGridView的行索引+1 insertRowIndex += 1 End If Next line --------------------------------------------------------------------------------
13、 DataGridView 单元格的ToolTip的设置 DataGridView.ShowCellToolTips = True 的情况下, 单元格的 ToolTip 可以表示出来。对于单元格窄小,无法完全显示的单元格, ToolTip 可以显示必要的信息。
1) 设定单元格的ToolTip内容 [VB.NET] ' 设定单元格的ToolTip内容 DataGridView1(0, 0).ToolTipText = "该单元格的内容不能修改" ' 设定列头的单元格的ToolTip内容 DataGridView1.Columns(0).ToolTipText = "该列只能输入数字" ' 设定行头的单元格的ToolTip内容 DataGridView1.Rows(0).HeaderCell.ToolTipText = "该行单元格内容不能修改"
2) CellToolTipTextNeeded 事件 在批量的单元格的 ToolTip 设定的时候,一个一个指定那么设定的效率比较低, 这时候可以利用 CellToolTipTextNeeded 事件。当单元格的 ToolTipText 变化的时候也会引发该事件。但是,当DataGridView的DataSource被指定且VirualMode=True的时候,该事件不会被引发。 [VB.NET] ' CellToolTipTextNeeded事件处理方法 Private Sub DataGridView1_CellToolTipTextNeeded(ByVal sender As Object, _ ByVal e As DataGridViewCellToolTipTextNeededEventArgs) _ Handles DataGridView1.CellToolTipTextNeeded e.ToolTipText = e.ColumnIndex.ToString() + ", " + e.RowIndex.ToString() End Sub --------------------------------------------------------------------------------
14、 DataGridView 的右键菜单(ContextMenuStrip) DataGridView, DataGridViewColumn, DataGridViewRow, DataGridViewCell 有 ContextMenuStrip 属性。可以通过设定 ContextMenuStrip 对象来控制 DataGridView 的右键菜单的显示。 DataGridViewColumn 的 ContextMenuStrip 属性设定了 除了列头以外的单元格的右键菜单。 DataGridViewRow 的 ContextMenuStrip 属性设定了除了行头以外的单元格的右键菜单。DataGridViewCell 的 ContextMenuStrip 属性设定了指定单元格的右键菜单。 [VB.NET] ' DataGridView 的 ContextMenuStrip 设定 DataGridView1.ContextMenuStrip = Me.ContextMenuStrip1 ' 列的 ContextMenuStrip 设定 DataGridView1.Columns(0).ContextMenuStrip = Me.ContextMenuStrip2 ' 列头的 ContextMenuStrip 设定 DataGridView1.Columns(0).HeaderCell.ContextMenuStrip = Me.ContextMenuStrip2 ' 行的 ContextMenuStrip 设定 DataGridView1.Rows(0).ContextMenuStrip = Me.ContextMenuStrip3 ' 单元格的 ContextMenuStrip 设定 DataGridView1(0, 0).ContextMenuStrip = Me.ContextMenuStrip4 利用 CellContextMenuStripNeeded 事件可以设定单元格的右键菜单,尤其但需要右键菜单根据单元格值的变化而变化的时候。比起使用循环遍历,使用该事件来设定右键菜单的效率更高。但是,在DataGridView使用了DataSource绑定而且是VirtualMode的时候,该事件将不被引发。 [VB.NET] ' CellContextMenuStripNeeded事件处理方法 Private Sub DataGridView1_CellContextMenuStripNeeded( _ ByVal sender As Object, _ ByVal e As DataGridViewCellContextMenuStripNeededEventArgs) _ Handles DataGridView1.CellContextMenuStripNeeded Dim dgv As DataGridView = CType(sender, DataGridView) If e.RowIndex < 0 Then ' 列头的ContextMenuStrip设定 e.ContextMenuStrip = Me.ContextMenuStrip1 ElseIf e.ColumnIndex < 0 Then ' 行头的ContextMenuStrip设定 e.ContextMenuStrip = Me.ContextMenuStrip2 ElseIf TypeOf (dgv(e.ColumnIndex, e.RowIndex).Value) Is Integer Then ' 如果单元格值是整数时 e.ContextMenuStrip = Me.ContextMenuStrip3 End If End Sub 同样,可以通过 RowContextMenuStripNeeded 事件来设定行的右键菜单。 [VB.NET] ' RowContextMenuStripNeeded事件处理方法 Private Sub DataGridView1_RowContextMenuStripNeeded( _ ByVal sender As Object, _ ByVal e As DataGridViewRowContextMenuStripNeededEventArgs) _ Handles DataGridView1.RowContextMenuStripNeeded Dim dgv As DataGridView = CType(sender, DataGridView) ' 当"Column1"列是Bool型且为True时、设定其的ContextMenuStrip Dim boolVal As bject = dgv("Column1", e.RowIndex).Value Console.WriteLine(boolVal) If TypeOf boolVal Is Boolean AndAlso CBool(boolVal) Then e.ContextMenuStrip = Me.ContextMenuStrip1 End If End Sub CellContextMenuStripNeeded 事件处理方法的参数中、「e.ColumnIndex=-1」表示行头、「e.RowIndex=-1」表示列头。RowContextMenuStripNeeded则不存在「e.RowIndex=-1」的情况。
--------------------------------------------------------------------------------
15、 DataGridView 的单元格的边框、 网格线样式的设定
1) DataGridView 的边框线样式的设定 DataGridView 的边框线的样式是通过 DataGridView.BorderStyle. 属性来设定的。 BorderStyle. 属性设定值是一个 BorderStyle. 枚举: FixedSingle(单线,默认)、Fixed3D、None。
2) 单元格的边框线样式的设定 单元格的边框线的样式是通过 DataGridView.CellBorderStyle. 属性来设定的。 CellBorderStyle. 属性设定值是 DataGridViewCellBorderStyle. 枚举。(详细参见 MSDN) 另外,通过 DataGridView.ColumnHeadersBorderStyle. 和 RowHeadersBorderStyle. 属性可以修改 DataGridView 的头部的单元格边框线样式。 属性设定值是 DataGridViewHeaderBorderStyle. 枚举。(详细参见 MSDN)
3) 单元格的边框颜色的设定 单元格的边框线的颜色可以通过 DataGridView.GridColor 属性来设定的。默认是 ControlDarkDark 。但是只有在 CellBorderStyle. 被设定为 Single、SingleHorizontal、SingleVertical 的条件下才能改变其边框线的颜色。同样,ColumnHeadersBorderStyle. 以及 RowHeadersBorderStyle. 只有在被设定为 Single 时,才能改变颜色。
4) 单元格的上下左右的边框线式样的单独设定 CellBorderStyle只能设定单元格全部边框线的式样。要单独改变单元格某一边边框式样的话,需要用到DataGridView.AdvancedCellBorderStyle属性。如示例: [VB.NET] ' 单元格的上边和左边线设为二重线 ' 单元格的下边和右边线设为单重线 DataGridView1.AdvancedCellBorderStyle.Top = _ DataGridViewAdvancedCellBorderStyle.InsetDouble DataGridView1.AdvancedCellBorderStyle.Right = _ DataGridViewAdvancedCellBorderStyle.Inset DataGridView1.AdvancedCellBorderStyle.Bottom = _ DataGridViewAdvancedCellBorderStyle.Inset DataGridView1.AdvancedCellBorderStyle.Left = _ DataGridViewAdvancedCellBorderStyle.InsetDouble 同样,设定行头单元格的属性是: AdvancedRowHeadersBorderStyle, 设定列头单元格属性是:AdvancedColumnHeadersBorderStyle。
--------------------------------------------------------------------------------
16、 DataGridView 单元格表示值的自定义 通过CellFormatting事件,可以自定义单元格的表示值。(比如:值为Error的时候,单元格被设定为红色) 下面的示例:将“Colmn1”列的值改为大写。 [VB.NET] 'CellFormatting 事件处理方法 Private Sub DataGridView1_CellFormatting(ByVal sender As Object, _ ByVal e As DataGridViewCellFormattingEventArgs) _ Handles DataGridView1.CellFormatting Dim dgv As DataGridView = CType(sender, DataGridView) ' 如果单元格是“Column1”列的单元格 If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _ TypeOf e.Value Is String Then ' 将单元格值改为大写 Dim str As String = e.Value.ToString() e.Value = str.ToUpper() ' 应用该Format,Format完毕。 e.FormattingApplied = True End If End Sub CellFormatting事件的DataGridViewCellFormattingEventArgs对象的Value属性一开始保存着未被格式化的值。当Value属性被设定表示用的文本之后,把FormattingApplied属性做为True,告知DataGridView文本已经格式化完毕。如果不这样做的话,DataGridView会根据已经设定的Format,NullValue,DataSourceNullValue,FormatProvider属性会将Value属性会被重新格式化一遍。
--------------------------------------------------------------------------------
17、 DataGridView 用户输入时,单元格输入值的设定 通过 DataGridView.CellParsing 事件可以设定用户输入的值。下面的示例:当输入英文文本内容的时候,立即被改变为大写。 [VB.NET] 'CellParsing 事件处理方法 Private Sub DataGridView1_CellParsing(ByVal sender As Object, _ ByVal e As DataGridViewCellParsingEventArgs) _ Handles DataGridView1.CellParsing Dim dgv As DataGridView = CType(sender, DataGridView) ' 单元格列为“Column1”时 If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _ e.DesiredType Is GetType(String) Then ' 将单元格值设为大写 e.Value = e.Value.ToString().ToUpper() ' 解析完毕 e.ParsingApplied = True End If End Sub
--------------------------------------------------------------------------------
18、 DataGridView 新加行的默认值的设定 需要指定新加行的默认值的时候,可以在DataGridView.DefaultValuesNeeded事件里处理。在该事件中处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。 [VB.NET] ' DefaultValuesNeeded 事件处理方法 Private Sub DataGridView1_DefaultValuesNeeded(ByVal sender As Object, _ ByVal e As DataGridViewRowEventArgs) _ Handles DataGridView1.DefaultValuesNeeded ' 设定单元格默认值 e.Row.Cells("Column1").Value = 0 e.Row.Cells("Column2").Value = "-" End Sub
发表评论
-
C# WinForm程序如何与js交互
2012-07-15 22:28 2318一、建立网页 <html ... -
SQLITE FOR .NET4.0使用说明以及DLL
2012-06-28 22:07 1203SQLITE FOR .NET4.0使用说明以及DLL -
WinForm中TabControl的一些事件写法(C#)
2012-06-27 20:41 9877在TabControl控件中并没提供单个选项卡的Click事件 ... -
C# 通过字符串动态创建一个窗体
2012-06-27 20:27 1745private void button1_Click(obje ... -
vs2010 打包winform成EXE文件
2012-04-20 14:03 1645见附件 -
C#中DataGridView控件60招
2012-01-13 09:36 65571. DataGridView当前的单元格属性取得、变更 2 ... -
单击dataGridView某一行时将dataGridView当前选择行的某列值赋值给某个文本框
2012-01-13 09:19 2459SelectedRows和CurrentRow之间的区别 ... -
C# 中奇妙的函数. String Split 和 Join
2011-10-25 10:51 1111很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能 ... -
asp.net中web.config配置节点大全详解
2011-10-25 10:16 1374asp.net中web.config配置节点大全详解 2 ... -
Entity Framework in ASP.NET MVC Application (三)
2011-05-10 20:31 2467In the previous tutorial you im ... -
Entity Framework in ASP.NET MVC Application (二)
2011-05-10 20:29 1699In the previous tutorial you cr ... -
Entity Frame Work 4.1调用存储过程
2011-05-10 20:24 2134在这个问题上,琢磨了很久了。今天终于找到了调用的方法。 存储 ... -
entity-framework (code-first)实例开发(一)
2011-05-09 20:40 2752The Contoso University Web Appl ... -
使用ef4.1 的dbcontext进行数据库循环操作
2011-04-24 23:06 2264如果你想要调用一个类的方法进行循环操作:官方的例子: Dis ... -
使用EF 4.1的DbContext
2011-04-24 22:36 3641简述:EF4.1包括Code First和DbContext ... -
ADO.NET 访问存储过程
2011-04-24 22:15 1590ADO.NET 访问存储过程其实也比较简单,但是有些小细节部分 ... -
JAVA与.NET的相互调用——通过Web服务实现相互调用(附原代码)
2011-04-24 20:58 1287JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有 ... -
视图模式/视图->视图包
2011-04-24 20:16 1472ASP.NET MVC(自V1起)就支持一个带控制器和视图的V ... -
SkipRequestValidation] –> [AllowHtml]
2011-04-24 20:15 1437ASP.NET MVC内置了防止HTML和跨站脚本注入攻击的支 ... -
Log4net 详细说明
2011-04-12 22:29 2071在实际项目中我们经常 ...
相关推荐
【WinForm Control - DataGridView 编程36计】 在.NET框架中,WinForm应用程序中用于数据展示和编辑的常用控件之一就是DataGridView。这个控件提供了丰富的功能,允许用户进行数据的查看、编辑和交互。以下是一些...
c# winform ===datagridview 单元格合并 c# winform ===datagridview 单元格合并 c# winform ===datagridview 单元格合并
//设置列表头 foreach (DataGridViewColumn headerCell in dataGridView1.Columns) { dt.Columns.Add(headerCell.HeaderText); } foreach (DataGridViewRow item in dataGridView1.Rows) { dr = dt.NewRow(); for ...
总的来说,这个C# WinForm下的`DataGridView`分页控件源代码提供了一种高效且用户友好的数据分页解决方案,开发者可以根据自身需求对其进行二次开发和优化,以适应不同的项目需求。通过学习和理解这个源代码,开发者...
"基于C#的WinForm中DataGridView控件操作汇总" 在C#的WinForm中,DataGridView控件是一种常见的控件,用于显示和编辑表格数据。下面将对DataGridView控件的操作进行汇总。 一、单元格内容的操作 在DataGridView...
WinForm ListView,DataGridView通用分页控件,因为自己要用,自己根据网上搜罗的一些代码进行重新封装,文件中有一个PagerNavigate.dll文件,包含了两种分页控件,ListView,DataGridView可以通用任何一个分页控件。...
在C# WinForm开发中,`DataGridView`是一个非常常用的控件,用于展示表格数据。它提供了丰富的功能,如数据编辑、排序、分页等。在实际应用中,有时我们需要将`DataGridView`中的数据打印出来,方便用户进行查看或...
在C# WinForm开发中,`DataGridView`控件是一个常用的数据展示工具,它允许用户以表格形式查看和操作数据。而`DataGridView`中的复选框列(Checkbox Column)则为用户提供了一种方便的选择方式,例如在多选或单选...
在C# WinForm开发中,`DataGridView`是一个非常常用的控件,用于展示表格数据。而`DataGridViewComboBoxColumn`是`DataGridView`的一个列类型,它允许用户在单元格中选择一个值,这个值通常是从下拉列表中选取。在这...
C# WinForm开发框架是一种基于.NET Framework的桌面应用程序开发工具,它为开发者提供了一套完整的控件、设计模式和架构,使得创建具有丰富用户界面的Windows应用程序变得更加便捷和高效。这款框架尤其适合初学者,...
在C# WinForm开发中,`DataGridView`控件是一个常用的数据展示工具,它允许开发者将数据绑定到控件上,方便用户进行查看、编辑和操作。本资源主要讲解如何将集合中的对象属性绑定到`DataGridView`,从而实现数据的...
在C# Winform开发中,`DataGridView`是一个非常重要的控件,用于展示表格数据。它提供了丰富的功能,包括数据编辑、排序、筛选等。在这个场景中,我们将关注两个特定的功能:分页和全选/取消全选。这些功能在处理...
C# Winform DataGridView控件的分页和打印功能实现,涉及到.NET框架下的Windows窗体应用程序开发。DataGridView控件是一个功能强大的表格数据展示组件,它可以用来显示数据,如数据库查询结果等。分页功能是指将大量...
在C# WinForm开发中,`DataGridView`是一个常用的控件,用于展示表格数据。然而,标准的`DataGridViewTextBoxColumn`仅能支持基本的文本显示,无法直接处理HTML格式的内容。要实现`DataGridView`显示HTML内容,我们...
在C# WinForm开发中,`DataGridView`是一个非常重要的控件,它用于显示表格数据,类似于Excel电子表格。然而,标准的`DataGridView`控件不直接支持多行表头,这意味着默认情况下,表头只能显示一行文字。但在某些...
《C# WinForm实例解析——200个经典...通过深入学习这200个经典实例,你将能够全面掌握C# WinForm开发,提升自己的编程技巧,为日后的项目开发打下坚实基础。每一个源码都是一个宝贵的教育资源,值得反复研读和实践。
C# Winform使用DataGridView的VirtualMode虚拟模式。 有两种数据类型作为DataGridView的数据源,一种是DataTable,一种是List。有不明白的,欢迎加微信交流:VPAmway。
在C# WinForm应用开发中,使用DataGridView控件与Access数据库进行交互是常见的数据管理方式。这个"datagridview access 数据库 c#"的示例("ComputerManage"项目)旨在教你如何实现查询、删除、添加数据以及生成...
在Windows Forms应用开发中,`DataGridView`控件是用于显示数据网格的重要组件。当你需要创建一个具有多层表头的复杂数据展示时,`winform datagridview多层表头`是一个关键知识点。多层表头可以更好地组织和分类...