在这种情况下goto的最佳替代品(vb.net)

时间:2013-02-26 09:00:10

标签: vb.net visual-studio-2010 datagridview

我在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)) 

我后来意识到这可能不是最好的方法,所以我想知道你们如何处理并解决这个问题?正如我在我的个人资料中所说的那样,我在这里学习,当我需要在将来解决类似的问题时,将考虑来自更有经验的开发人员的任何建议

1 个答案:

答案 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