Kilik Sky
Kilik Sky

Reputation: 161

VB.NET nullReferenceException Unhandled

I can't add question(txtQuestion.Text) to the dataGridView but if you add the same question it works and shows MessageBox.Show("You can't enter the same question."). Adding data is my only problem.

Dim qID As String
        rnd.Next(0, 99999)
        For Each row As DataGridViewRow In UsersDBDataGridView.Rows
            If txtQuestion.Text = row.Cells(1).Value.ToString Then '<-- NullReferenceException was unahandled.
                MessageBox.Show("You cant enter the same Question.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                valid = True
                Exit For
            Else
                valid = False
            End If
        Next
        If cbxDifficulty.Text = "Easy" Then
            diff = "E"
            diffValue = 5
        ElseIf cbxDifficulty.Text = "Average" Then
            diff = "A"
            diffValue = 10
        ElseIf cbxDifficulty.Text = "Difficult" Then
            diff = "D"
            diffValue = 20
        End If
        qID = diff & "-" & Date.Now.Date.ToString("ddMMMyyyy").ToUpper & "-" & rnd.ToString("00000")
        If valid = False Then
            Me.UsersDBTableAdapter.Add(qID, txtQuestion.Text, txtAnswer.Text, diffValue)
            Me.UsersDBTableAdapter.Fill(Me.UsersDBDataSet.UsersDB)
        End If

Upvotes: 0

Views: 371

Answers (1)

Visual Vincent
Visual Vincent

Reputation: 18310

You need to add a null check to your If-statement for the Value property.

If row.Cells(1).Value IsNot Nothing AndAlso txtQuestion.Text = row.Cells(1).Value.ToString Then

And I'd just like to point out: There's nothing wrong with using the = operator to compare strings.

Infact, the equality operator calls String.Equals() to perform the comparison:

The operator, in turn, calls the static Equals(String, String) method, which performs an ordinal (case-sensitive and culture-insensitive) comparison.

Upvotes: 1

Related Questions