2016-10-18 18 views
0

datagridviewに3列あり、列0,および2を呼び出すことができます。Datagridview VB.Netの列より大きいおよび少ない列

enter image description here

私の質問は、列2が列1よりも大きいとき、私はオレンジ色の列0ターンを作ることができる方法ですか?たとえば、Banana Catsup 4 kgの列25であり、列1は列2よりも大きいので、その場合は列0はオレンジ色に変わりませんが、私の例ではオレンジ色に変わります。ここに私のコードは

Try 
For i As Integer = DataGridView1.RowCount - 1 To 3 Step -1 
If DataGridView1.Rows(i).Cells(1).Value > DataGridView1.Rows(i).Cells(2).Value Then 
Me.DataGridView1.Rows(i).Cells(1).Style.BackColor = Color.Orange 
End If 
Next 
Catch 
End Try 

私のコードを観察すると、私のコードは最初の番号でのみ動作するようです。あなたはこのようにそれを単に行うことができたとき、私は

TYSM

+0

このコードはどのmehtodに属していますか?なぜRowCount -1から3へループし、0ではなくRowCount -1にループするのですか?ループの後に 'DataGridView1.Refresh()'を試しましたか? –

答えて

0

なぜ物事を複雑に助けてください?

Try 
     For i = 0 To DataGridView1.RowCount - 1 
      If Val(DataGridView1.Rows(i).Cells(1).Value.ToString) > Val(DataGridView1.Rows(i).Cells(2).Value.ToString) Then 
       Me.DataGridView1.Rows(i).Cells(0).Style.BackColor = Color.Orange 
      End If 
     Next 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

また、空のcatchを使用すると、遅かれ早かれ問題が発生します。

Val()をセルに追加して、空白のときに問題が発生しないことを確認してください。

+0

TYSSM sirの助けを借りていつも助けてくれる –

+0

遅く返事をして申し訳ありませんが、私の会議が終わったばかりです –

+0

同じコードを試してみましたが、同じ出力です: –

0

2つの文字列値を比較しています。まず、col1とcol2の値をINTに変換して比較する必要があります。

Try 
For i As Integer = DataGridView1.RowCount - 1 To 3 Step -1 
If CInt(Replace(DataGridView1.Rows(i).Cells(1).Value,",","")) > CInt(Replace(DataGridView1.Rows(i).Cells(2).Value,",","")) Then 
Me.DataGridView1.Rows(i).Cells(1).Style.BackColor = Color.Orange 
End If 
Next 
Catch 
End Try