2013-05-07 166 views
0

我有一個名爲str字符串,並以我的事件,當我使用的代碼等於「管理員」:錯誤比較字符串

Dim AdminSTR As String = "Administrator" 
    If str.ToString = AdminSTR Then 
     Home.CurrentUser.Text = "Current User: " & UsernameTextBox.Text 
     Home.CurrentUserSTR = UsernameTextBox.Text 
     Home.AccessLBL.Text = " | Level: " & str 
     Home.Show() 
    Else 
     ClientForm.Show() 
    End If 

它指引我到我ClientForm。雖然它應該引導我到我的Home表單。這是爲什麼?

感謝

+0

如果'str'是一個'string',爲什麼要使用'ToString'將它轉換爲'string'? – 2013-05-07 15:16:50

+0

我只是在做一個快速檢查。無論如何它都是騎行,所以沒有區別。 – Kraxed 2013-05-07 15:18:11

+0

你確定你在'str'的​​開頭/結尾沒有任何空白嗎? – Steve 2013-05-07 15:19:41

回答

4

只是猜測,也許是「管理員」相反,.NET是區分大小寫的默認。或者你的空格開頭/結尾:

If "Administrator".Equals(str.Trim(), StringComparison.OrdinalIgnoreCase) Then 
    Home.CurrentUser.Text = "Current User: " & UsernameTextBox.Text 
    Home.CurrentUserSTR = UsernameTextBox.Text 
    Home.AccessLBL.Text = " | Level: " & str 
    Home.Show() 
Else 
    ClientForm.Show() 
End If 
+0

仍然有相同的錯誤..感謝您的答覆! – Kraxed 2013-05-07 15:22:26

+2

@Kraxed:此時使用調試器並檢查'str'的​​值。只需在第一行設置斷點並使用F10 + Quck-Watch-Window。 – 2013-05-07 15:24:00

0

使用Compare()

If String.Compare(str, AdminSTR) = 0 Then 
0

我定了!我有一行代碼在它的開頭添加了一個「」來防止它成爲一個空值。感謝所有幫助!特別是@TimSchmelter,用於指出案例和空白區域!投了! :)

+0

使用'Compare()'或'Equals()'(如Tim),但不要使用'='來比較'String's。 – 2013-05-07 15:47:53

+1

如果Tim的答案是最有幫助的,那麼你應該把它標記爲正確的答案。 – 2013-05-07 15:55:49

+0

@Ravi - 爲什麼不使用=來比較字符串,而不是如果你需要不區分大小寫的比較?你能解釋你的陳述的原因嗎? – 2013-05-08 14:36:02