2016-08-19 6 views
3

Ich habe zwei Strukturen, die manchmal mit Daten von einem Benutzer oder manchmal beide gefüllt wird. Ich muss entweder die gesamte Struktur prüfen, um zu sehen, ob Daten eingegeben wurden oder nicht. Ich wäre auch in Ordnung, wenn ich nur eine Variable überprüfen könnte, um zu sehen, ob sie nicht leer oder null ist (was ich unten getan habe). Wenn der Code ausgeführt wird, ist btnTurn.Enabled immer deaktiviert, unabhängig davon, ob die Struktur Daten enthält oder nicht. Könnte das ein Problem mit meinem Boolean sein?VB überprüfen Wert der Struktur

Structures

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/else

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

Bei Strings Sie eine der Optionen [es die Funktion] verwendet werden soll (https://msdn.microsoft.com/en-us/library/system.string.isnullorempty (v = vs.110) .aspx) um null oder leer zu erkennen. Es hängt alles davon ab, was Sie mit "hat Werte" meinen. Der beste Weg wäre, eine Funktion zu haben, die wahr oder falsch zurückgibt. –

+0

Randnotiz: Sind Sie sicher, dass diese als Strukturen definiert werden sollten? Sie sind ziemlich groß. Die Verwendung einer normalen Klasse ist hier wahrscheinlich besser. Und deine Verwendung von "Freund" ist auch suspekt. – sstan

+0

@sstan Dieser Code ist für eine Anwendung, die vor Jahren erstellt wurde. Vertrauen Sie mir Ich möchte keine Struktur verwenden, aber es ist einfacher, ohne die Änderungen, die der Kunde wünscht, neu zu codieren, was nichts mit der Speicherung der Daten zu tun hat. –

Antwort

5

Sie immer is nothing statt =nothing und isnot nothing statt <> nothing

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

Oder noch besser als @zaggler empfohlen:

 btnTurn.Enabled = structSD2.szTBMNum2 Is Nothing 
+3

'btnTurn.Enabled = structSD2.szTBMNum2 Nichts ist nur ein bisschen einfacher für deine Augen ... – Codexer

+2

Ja, schreibe keinen solchen Code - es ist ein Anti-Pattern. –

+1

Ja, einverstanden - es ist einfach einfacher für den OP, die Veränderung auf diese Weise zu sehen. – FloatingKiwi

1
If structSD2.szTBMNNum Is Nothing Then 
Verwandte Themen