2012-10-03 43 views
0

大家早上好。如果.....然後聲明不能正常工作

我有這個很奇怪的問題。

這是我的代碼片段。

Dim apantisi_pou_edwse As String 
    Dim objreader As New StreamReader(TEST_NAME) 
    Dim Answer1 As String = Split(objreader.ReadToEnd(), vbCrLf)(1) & vbCrLf 

    If test1.RadioButton1.Checked = True Then 
       apantisi_pou_edwse = test1.RadioButton1.Text.ToString() 

      ElseIf test1.RadioButton2.Checked = True Then 
       apantisi_pou_edwse = test1.RadioButton2.Text.ToString() 
      End If 
    If apantisi_pou_edwse = Answer1 Then 
       RichTextBox1.BackColor = Color.Green 
       RichTextBox1.Text = "Right answer!" 
      ElseIf apantisi_pou_edwse <> Answer1 Then 
       RichTextBox1.BackColor = Color.Red 
       RichTextBox1.Text = "Sorry, wrong anwser" 
      End If 

所以這是從文本文件中讀取一行並將其分配給字符串變量Answer1。 然後它接受相應單選按鈕的Text屬性並將其分配給String變量apantisi_pou_edwse。 最後,它檢查是否apantisi_pou_edwse = Aswer1。 問題是,即使兩者相等,if ... then語句也不會識別它們,並且始終移動到elseif部分。 我錯過了什麼? 非常感謝

編輯

If String.Compare(apantisi_pou_edwse, Answer1) = 0 Then 
      RichTextBox1.BackColor = Color.Green 
      RichTextBox1.Text = "Συγχαρητήρια απάντησες σωστά" 
     Else 
      RichTextBox1.BackColor = Color.Red 
      RichTextBox1.Text = "Λυπάμαι απάντησες λάθος" 
     End If 

我改變了我的if語句與上面的一個,但它仍然無法正常工作:(

EDIT2 感謝Mortalus和Enigmativity爲他們的答案!他們解決了問題

+1

可能是,由於某種原因,你已經附加了'vbCrLf'對字符串的結尾你已從文件中讀取,但單選按鈕文本不包含該文件。此外,「文本」已經是一個字符串。爲什麼要調用'ToString()'? –

+1

另外,'ElseIf apantisi_pou_edwse <> Answer1然後''可能只是'Else' - 你已經通過'If'建立了兩個值不匹配。 –

回答

1

嘗試修改此行:

Dim Answer1 As String = Split(objreader.ReadToEnd(), vbCrLf)(1) & vbCrLf 

這樣:

Dim Answer1 As String = Split(objreader.ReadToEnd(), vbCrLf)(1) 
+0

感謝Enigmativity。這終於做到了 – Pantheo

1

您應該使用不同的方法比較以下行的字符串:

If apantisi_pou_edwse = Answer1 Then 

此行apantisi_pou_edwse的引用與Answer1變量

嘗試使用比較。

String.Compare(apantisi_pou_edwse, Answer1) 
+0

非常感謝Mortalus – Pantheo