我是vb.net的新手,我知道我还有很多需要学习的东西。研究和大量的示例代码可以帮助我提高我的编程技能,但是还有很多东西要被混淆。
这是我刚刚遇到的错误。
Dim drv As DataRowView
If e.RowIndex >= 0 Then
If e.RowIndex <= ds.Tables("entrancequestion").Rows.Count - 1 ***Then***
'Object reference not set to an instance of an object.
drv = ds.Tables("entrancequestion").DefaultView.Item(e.RowIndex)
Dim c As Color
If drv.Item("TimesAnswered").Value <= (Convert.ToDouble(lblappcount.Text) * 0.2) Then
c = Color.Yellow
ElseIf drv.Item("TimesAnswered").Value >= (Convert.ToDouble(lblappcount.Text) * 0.8) Then
c = Color.Red
Else
c = Color.Black
End If
e.CellStyle.ForeColor = c
End If
End If
这是在DataGridView.Cellformatting事件下编写的。 基本上我只是想在这些条件下更改datagridview上的行文本颜色。
任何建议都非常感谢。
答案 0 :(得分:2)
ds
为空或者不包含名为 entrancequestion 的表。
在这里使用一点Assert
魔法:
Debug.Assert(ds IsNot Nothing)
Dim tblEntranceQuestion As DataTable = ds.Tables("entrancequestion")
Debug.Assert(tblEntranceQuestion IsNot Nothing)
If e.RowIndex <= tblEntranceQuestion.Rows.Count - 1
(...)
答案 1 :(得分:0)
知道了。这就是我的所作所为。在Cell格式化事件下,我写了这个。
For i As Integer = 0 To EntranceQuestionDataGridView.Rows.Count - 1
If EntranceQuestionDataGridView.Rows(i).Cells(10).Value <= (Convert.ToDouble(lblappcount.Text) * 0.2) And EntranceQuestionDataGridView.Rows(i).Cells(10).Value > 0 Then
EntranceQuestionDataGridView.Rows(i).DefaultCellStyle.BackColor = Color.Red
ElseIf EntranceQuestionDataGridView.Rows(i).Cells(10).Value >= (Convert.ToDouble(lblappcount.Text) * 0.8) Then
EntranceQuestionDataGridView.Rows(i).DefaultCellStyle.BackColor = Color.Yellow
Else
EntranceQuestionDataGridView.Rows(i).DefaultCellStyle.BackColor = Color.White
End If
Next
无论如何,谢谢你们。我学到了很多东西:)