如何在网格视图中为网格单元格着色?
Posted
技术标签:
【中文标题】如何在网格视图中为网格单元格着色?【英文标题】:How to color Grid cells in Grid View? 【发布时间】:2012-08-15 19:46:53 【问题描述】:以下是我的代码,我一直在尝试为单元格着色,但不确定当我的网格源是数据库时如何使用“样式”属性。我是新手,所以入门有困难。
一些网站或指针会有很大帮助。
我希望能够为一些背景单元格着色或为某些行或特定列着色...基本上所有与颜色相关的内容。如何使用我当前的 sn-p 执行此操作?另外,我可以了解更多信息的链接将不胜感激。
LarsTech 我正在尝试将您添加到聊天中,但我没有足够的代表,因此我想我无法与您联系。
Imports System.Data.SqlClient
Imports System.Collections.Generic
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim connectionString As String = "data source=SQst; database=MVar2; User ID=Wepp; Password=2010Live; Integrated Security=false;"
Dim sql As String = "SELECT * FROM Prer"
Dim connection As New SqlConnection(connectionString)
Dim dataadapter As New SqlDataAdapter(sql, connection)
Dim ds As New DataSet()
connection.Open()
dataadapter.Fill(ds, "Authors_table")
connection.Close()
DataGridView1.DataSource = ds
DataGridView1.DataMember = "Authors_table"
**DataGridView1.Rows[2].DefaultCellStyle.BackColor = Color.PaleGreen
DataGridView1.Rows[3].Cells[1].Style.BackColor = Color.Red**
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Call PrintDGV.Print_DataGridView(DataGridView1)
End Sub
End Class
我得到的错误:
Error 1 Property access must assign to the property or use its value.
Error 2 Identifier expected.
Error 3 Property access must assign to the property or use its value.
Error 4 Identifier expected.
我试过了: DataGridView1.Rows(0).Cell(0).Style.BackColor = Color.Red
我得到了 1 个错误:
Error 1 'Cell' is not a member of 'System.Windows.Forms.DataGridViewRow'.
编辑:在网上浏览了更多内容后,我使用以下代码为选定的单元格着色:
DataGridView1.Item(4, 5).Style.BackColor = Color.Red
但是,这不会为行或列着色,所以我仍然希望让这些东西发挥作用。
【问题讨论】:
请看我修改后的答案。我没有注意到您使用的是 VB 而不是 c#。我添加了两个可以重新着色整个列和行。使用这两个代码以及您找到的代码应该是您为 DGV 着色所需的全部内容。 【参考方案1】:有几种不同的方法可以做到这一点。我相信 currentcell 是指当前活动的单元格,因此在填充网格后基于它着色不会产生任何结果。
以下几种方法:
c#:
For rows/cells:
dataGridView1.Rows[RowNumber].DefaultCellStyle.BackColor = Color.PaleGreen;
dataGridView1.Rows[RowNumber].Cells[1].Style.BackColor = Color.Red;
for columns:
dataGridView1.Columns[ColumnNumber].DefaultCellStyle.BackColor = Color.Black;
VB:
DataGridView1.Rows(0).DefaultCellStyle.BackColor = Color.Green
DataGridView1.Columns(0).DefaultCellStyle.BackColor = Color.Blue
这两种方法都会将颜色应用于单元格背景。使用一些逻辑来控制如何/哪些单元格/行被着色。
【讨论】:
这就是我使用 DGV 的方式。此外,如果您想清除颜色以返回到默认系统主题(即在大多数情况下为白色),请使用Color.Empty
@Lee Harrison 我试过这个,我得到了一堆错误,我添加了新的东西并更新了上面的代码。
@MichaelKarien 你遇到了什么错误?尝试调用DataGridView1.Refresh()
在更改颜色后重新绘制表格。也可能是您正在使用CurrentCell
,尽管我不确定为什么这会影响任何事情。我现在正在查看我的代码,我将其称为(VB 代码)myDGV.Rows(myDGV.CurrentRow.Index).Cells(4).Style.BackColor = Color.LightBlue
,然后执行myDGV.Refresh
,这样就可以了。
他的错误是由于他直接将我的c#代码粘贴到代码窗口中而没有将方括号更改为正确的VB括号。
谢谢你们!现在可以了!是的,我怀疑那是 C#,因为你有“;”在行尾【参考方案2】:
您也可以在 .aspx 文件中以声明方式进行设置。该链接指向 2.0 版本的代码,但这仍然兼容。
MSDN
【讨论】:
以上是关于如何在网格视图中为网格单元格着色?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Flutter 中的网格视图计数访问生成列表中的特定单元格?
iOS UICollectionView:具有交替网格对齐的圆形视图的单元格