2013-10-21 29 views
2

我有一个文本框,显示其他两个人的结果相乘在一起,在任何东西被投入框中显示NaN,有没有办法让它显示“0”,甚至保持空在任何事情发生之前停止显示NaN的文本框

Dim thick1 As Double 
Dim tb8 As Double 
Dim result As Double 
thick1 = Val(thickness1.Text) 
tb8 = Val(TextBox8.Text) 
result = thick1/tb8 
TextBox30.Text = FormatNumber(result, 3) 

^上面的代码就是我正在使用的文本框。

+5

停止使用VAL它不是相同的VAL为VB6。改用TryParse,你需要测试tb8是否为非零。这个代码位于哪里,事件过程可能是什么?这可能是NaN问题。 – Plutonix

回答

0

这似乎是代码在它自动运行的事件或表单加载。如果文本框还没有值,那么result = thick1/tb8将导致Nan(不是数字),因为您不能被零除。

同样,假设一个事件或某事:

If tb8 = 0 then 
    Exit Sub 
    else 
    result = thick1/tb8 
    TextBox30.Text = result.ToString("G3") 

    End if 

除了倾销VAL为的TryParse,考虑将显式的选项上

+0

当声明时,VB会给出'结果'(和其他变量)为'Double'的默认值,即0.0。这个问题被零除。 –

+0

是的...我忘记了数字...编辑 – Plutonix

0

尝试是这样的:

Dim result As Double 
Dim thick1 As Double = CDbl(thickness1.Text) 
Dim tb8 As Double = CDbl(TextBox8.Text) 
If IsNumeric(thick1) AndAlso IsNumeric(tb8) AndAlso tb8 <> 0 Then 
    result = thick1/tb8 
    TextBox30.Text = result.ToString("G3") 
End If