2016-08-19 50 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/else

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)来检测null或空。这一切都取决于你“有价值”的含义。最好的方法是有一个返回true或false的函数。 –

+0

附注:你确定那些应该被定义为结构?他们相当大。在这里使用普通的课程可能会更好。而你对'朋友'的使用也是可疑的。 – sstan

+0

@sstan此代码适用于多年前建立的应用程序。相信我我不想使用结构,但它更容易,而不必对客户想要的更改进行大量重新编码,这与数据的存储方式无关。 –

回答

5

你应该总是使用is nothing代替=nothingisnot 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

1
If structSD2.szTBMNNum Is Nothing Then