2013-12-09 44 views
-1

一個循環中下面的代碼顯示事件時,按一下按鈕是火如果別人在VB.Net

Protected Sub btnFinish_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFinish.Click 
     For i As Integer = 0 To Gridview1.Rows.Count - 1 Step i + 1 
       Dim TextBox1 As TextBox = DirectCast(Me.Gridview1.Rows(i).FindControl("txtAnswer"), TextBox) 
       If TextBox1.Text = String.Empty Then 
        'do something 
       ElseIf TexBox1 <> String.Empty Then 
        'do something else 
       End If 
     Next 
End Sub 

這裏的問題是,正在執行的唯一條件是在if語句,即使它應該執行ElseIf語句。有人可以解釋爲什麼以及如何解決這個問題? 將帖子

+0

確定爲'else'匹配的情況? –

+0

將'ElseIf an.Text = String.Empty Then'更改爲'Else'。因爲'If'檢查'an.Text'不是空的,通過到達'Else'它必須是空的。 –

+0

對不起,我對c#不熟悉其他語言,但不是'='賦值運算符,並且您想在'VB.NET'中使用'==' – Jags

回答

2

幾件事情要注意比較文本/字符串時:

  1. 字符串可以爲NULL,而不是空
  2. 使用String.IsNULLOrEmpty檢查空/空
  3. 字符串也可以是WhiteSpace,使用String.IsWhiteSpace來檢查它
  4. 用戶可以在某些情況下輸入一些空格,如果您想確保它是正確的,請使用String.Trim來消除任何不需要的空格。

通常我做的是:(NOT String.IsNULLOrEmpty(givenText))AndAlso givenText.Trim.Length <> 0

+0

@eirishainjel不能成爲你的問題,你不應該讓事情混淆這種方式。 'String.Empty'等於'「」'。 –

+0

真的嗎?但是爲什麼當我將'String.Empty'改成''「'時,if-else條件起作用。我也很困惑,因爲我總是在其他代碼中使用'String.Empty',它運行良好。就在現在,當我在if-else中起訴它時,它不起作用。 – eirishainjel

+1

看看兩者的對比:http://stackoverflow.com/questions/151472/what-is-the-difference-between-string-empty-and-empty-string – Rex