Try the following code:
Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form.Load
lvw.OwnerDraw = True
End Sub
Private Sub lvw_DrawColumnHeader(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawListViewColumnHeaderEventArgs) Handles lvw.DrawColumnHeader
e.DrawDefault = True
End Sub
Private Sub lvw_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawListViewItemEventArgs) Handles lvw.DrawItem
Dim ColIndex As Integer = 1
e.Item.UseItemStyleForSubItems = False
Dim si As ListViewItem.ListViewSubItem = e.Item.SubItems(ColIndex)
If Val(si.Text) < 0 Then
si.ForeColor = Color.Red
Else
si.ForeColor = Color.Black
End If
e.DrawDefault = True
End Sub
Private Sub lvw_DrawSubItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawListViewSubItemEventArgs) Handles lvw.DrawSubItem
e.DrawDefault = True
End Sub
Change "lvw" to the name of your listview and change the ColIndex to the index of the value column.
If you need an example on usage, let me know. I can either send you an example solution or load one up on CodeProject.
Hope this helps.