我在VB中工作试图设置Datagridview的单元格背景颜色,并且找不到让我实现功能的内置函数,所以我最终在变量中存储了Alpha,Red,Green和Blue的值,然后使用`Color.FromArgb'
设置背景颜色这是我使用的代码,它起作用:
currentval = ""
A = ""
R = ""
G = ""
B = ""
For Each s As Char In reader.ReadElementString("cell")
If s = " " Then
currentval = ""
GoTo nextSS
End If
If Not s = "," Then
currentval = currentval & s
End If
If s = "," Then
If A = "" Then
A = currentval
currentval = ""
GoTo nextSS
End If
If Not A = "" And R = "" Then
R = currentval
currentval = ""
GoTo nextSS
End If
If Not A = "" And Not R = "" And G = "" Then
G = currentval
currentval = ""
GoTo nextSS
End If
End If
nextSS:
Next s
If Not A = "" And Not R = "" And Not G = "" And B = "" Then
B = currentval
currentval = ""
End If
Grid.Rows(i).Cells(y).Style.BackColor = Color.FromArgb(CInt(A), CInt(R), CInt(G), CInt(B))
我后来意识到这可能不是最好的方法,所以我想知道你们如何处理并解决这个问题?正如我在我的个人资料中所说的那样,我在这里学习,当我需要在将来解决类似的问题时,将考虑来自更有经验的开发人员的任何建议
答案 0 :(得分:1)
您可以通过使用GoTo
子句删除Else
,但如果您想通过分隔符拆分字符串,则应该使用String.Split method。
假设您的字符串为"166, 244, 100, 0"
,那么您可以使用以下内容:
Dim colors = value.Split(","c).Select(Function(v) CInt(v)).ToArray()
Dim new_color = Color.FromArgb(colors(0), colors(1), colors(2), colors(3))
Split
方法将字符串按,
分成4部分Select
获取每个部分并使用CInt
ToArray
接受序列并转换为Int
- 数组,以便我们可以访问带索引的元素Color
对象Color.FromArgb