2012-03-21 3 views
0

Сравнение строк не работает. Я попытался сравнить, equals, = и все эти методы не работают. Вот мой код:сравнение строк не работает В VB.NET

Dim activeChild2 = Me.ActiveMdiChild 
    If TypeOf activeChild2 Is Window Then 
     Dim activeChild As Window = Me.ActiveMdiChild 
     If (Not activeChild Is Nothing) Then 
      If activeChild.CTR_User.ToString = activeChild.User_name.ToString Then 
       Call activeChild.Edition() 

       Select Case Trim$(UCase(activeChild.Name)) 
        Case "FRM_MISSION" 
         'treatment 
        Case "FRM_TACHE" 
         'treatment 

       End Select 
      Else 
       MsgBox("Error modification!!!!", MsgBoxStyle.Critical) 
      End If 
     End If 
    End If 

Проблема заключается в Если activeChild.CTR_User.ToString = activeChild.User_name.ToString Тогда .В несмотря на наличие же строку тото = тото код всегда срабатывает в статье еще и показать мне в MsgBox

С уважением

+0

Если '' activeChild.CTRL_User' и activeChild.User_name' являются обе строки, то вам не нужно «ToString» на любом из них, чтобы выполнить сравнение. Если они не являются строками, результаты 'ToString' почти всегда не совпадают. –

+0

Да, вы правы, так что такое решение для сравнения объекта и строки? CTR_user - это объект, а user_name - строка – YosrJ

ответ

1

Почему вы называете .ToString? Строки activeChild.CTR_User и activeChild.User_name, или это объекты, которые вы пытаетесь сравнить?

Если это объекты, вы не можете сравнивать их с .ToString(), так как это будет неточно. вы должны использовать что-то вроде activeChild.CTR_User.Equals(activeChild.User_name) или activeChild.CTR_User is activeChild.User_name. Я не могу дать вам конкретных подробностей, если не знаю, с какими типами вы работаете.

Вы пытались установить на нем контрольную точку и проверять значения вручную в нескольких средствах отладки Visual Studio?

+0

Большое спасибо за ваш ответ, это помогло мне разобраться в проблеме. На самом деле CTR_user - это объект (который повлияет на текстовое поле в обработке), а user_name - это строка, поэтому невозможно сравнить их значения? Я отлаживал вручную, и я нашел одинаковые значения в обоих вариантах («admin» = «admin»), например – YosrJ

+0

Без проблем, рад помочь! – Spikeh

0

попробовать вместо = использование оператора Как

Например: Если activeChild.CTR_User.ToString Как activeChild.User_name.ToString