2013-05-07 105 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