2016-08-19 2 views
3

У меня есть две структуры, которые иногда заполняются данными от пользователя или иногда и того и другого. Мне нужно проверить всю структуру, чтобы увидеть, есть ли у нее ввод данных или нет. Я также был бы в порядке, если бы я мог проверить только переменную, чтобы увидеть, не является ли она пустой или пустой (что я и сделал ниже). Когда код запускается, btnTurn.Enabled всегда отключается, имеет ли структура данные или нет. Может быть, это проблема с моим логическим?VB проверить значение структуры

Структуры

Public Structure StructSurvData 
      Friend szTBMNum As String 
      Friend dblTBMElev1 As Double 
      Friend dblTBMElev2 As Double 
      Friend dblTBMElev3 As Double 
      Friend dblBACKSIGHT1 As Double 
      Friend dblBACKSIGHT2 As Double 
      Friend dblBACKSIGHT3 As Double 
      Friend dblFORESIGHT1 As Double 
      Friend dblFORESIGHT2 As Double 
      Friend dblFORESIGHT3 As Double 
      Friend szNewMPEDescr As String 
      Friend szDataComm As String 

     End Structure 

     Public Structure StructSurvData2 
      Friend szTBMNum2 As String 
      Friend dblTBMElev4 As Double 
      Friend dblTBMElev5 As Double 
      Friend dblTBMElev6 As Double 
      Friend dblBACKSIGHT4 As Double 
      Friend dblBACKSIGHT5 As Double 
      Friend dblBACKSIGHT6 As Double 
      Friend dblFORESIGHT4 As Double 
      Friend dblFORESIGHT5 As Double 
      Friend dblFORESIGHT6 As Double 
      Friend szNewMPEDescr2 As String 
      Friend szDataComm2 As String 
     End Structure 

Если/еще

If structSD2.szTBMNum2 = Nothing Then 
       btnTurn.Enabled = False 
      ElseIf structSD2.szTBMNum2 <> Nothing Then 
       btnTurn.Enabled = True 
      End If 
+0

Для строк, вы должны использовать один из [это функция] (https://msdn.microsoft.com/en-us/library/system.string.isnullorempty (v = vs.110) .aspx) для обнаружения нулевого или пустого. Все зависит от того, что вы подразумеваете под «имеет ценности». Лучшим способом было бы иметь функцию, которая возвращает true или false. –

+0

Сторона примечания: вы уверены, что они должны быть определены как структуры? Они довольно большие. Использование нормального класса, вероятно, лучше здесь. И ваше использование «друга» также является подозрительным. – sstan

+0

@sstan Этот код предназначен для приложения, которое было создано много лет назад. Поверьте мне, я не хочу использовать структуру, но ее проще без необходимости повторного кодирования изменений, которые хочет клиент, что не имеет никакого отношения к тому, как хранятся данные. –

ответ

5

Вы должны всегда использовать is nothing вместо =nothing и isnot nothing вместо <> nothing

 If structSD2.szTBMNum2 is Nothing Then 
      btnTurn.Enabled = False 
     ElseIf structSD2.szTBMNum2 isnot Nothing Then 
      btnTurn.Enabled = True 
     End If 

Или еще лучше, как @zaggler рекомендуется:

 btnTurn.Enabled = structSD2.szTBMNum2 Is Nothing 
+3

'btnTurn.Enabled = structSD2.szTBMNum2-Ничего 'просто немного легче на твоих глазах ... – Codexer

+2

Да, не пишите такой код - это анти-шаблон. –

+1

Да, согласился - для OP это просто легче увидеть изменения. – FloatingKiwi

Смежные вопросы