2017-03-12 19 views
0

dataGridViewに質問(txtQuestion.Text)を追加できませんが、同じ質問を追加するとMessageBox.Show( "同じ質問を入力することはできません")が表示されます。データの追加は私の唯一の問題です。VB.NET nullReferenceException未処理

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 
+1

[NullReferenceExceptionとは何か、それを修正する方法は?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i) -fix-it) – Enigmativity

+0

あなたの問題を解決した回答には、了承してください。 –

答えて

-1

文字列値comparation '=' dosntが正しく機能します。 .equalと チェック()

txtQuestion.Text .equal(row.Cellsは、(1).Value.ToString)次に

あなたは、両方の操作側にをトリミングすることができます。

+0

..等しくない、nullReferenceExceptionが処理されなかった –

+2

'='は文字列では機能しないという考え方はどこにありますか? – Enigmativity

+0

ここに:https://msdn.microsoft.com/en-us/library/bsc2ak47(v=vs.100).aspx –

1

プロパティについては、If-文章にヌルチェックを追加する必要があります。

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

そして私はちょうど指摘したいと思います:文字列を比較する=演算子を使用してと間違っものは何もありません。比較を実行するString.Equals()を呼び出しthe equality operator

Infactは、:

オペレータは、順番に、順序を実行静的等号(文字列、文字列)の方法、(大文字と小文字を区別し、培養非感受性)を呼び出します比較。

関連する問題