2

私は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)) 

後で、これがおそらくこれを行うための最良の方法ではないことに気づいたので、皆さんはこの問題にどのようにアプローチして解決するのだろうかと思いました。私のプロフィールにあるように、私は学ぶためにここにいます、そして私が将来同様の問題に取り組む必要があるときのために、より経験豊富な開発者からのアドバイスが考慮されます

4

1 に答える 1

1

GoTo句を使用するだけで を取り除くことができますがElse、区切り文字で文字列を分割する場合は、実際には String.Splitメソッドを使用する必要があります。

あなたの文字列が"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
  • はシーケンスを取り、 -ArrayToArrayに変換して、インデックスを使用して要素にアクセスできるようにしますInt
  • 次に、その配列を使用してColorオブジェクトを作成しますColor.FromArgb
于 2013-02-26T09:24:33.957 に答える