簡體   English   中英

為什么我不能使用我為其聲明的變量對按鈕進行編碼,但我可以使用該按鈕而無需在 Visual Basic 中聲明任何變量?

[英]Why can't I code a button using the variable I declared for it but I can use the button without declaring any variable in Visual Basic?

我正在使用 Visual Basic(一個 Windows 窗體應用程序)開發一個項目。 我創建了一個按鈕(我稱它為 button0),在嘗試為它處理點擊事件時,我為它聲明了一個變量,如下所示:

Public Class Project
    Dim txtAnswer As String
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        txtAnswer = answerBox.Text
        If txtAnswer.Length = 0 Then
            txtAnswer = "0"
        End If
    End Sub
End Class

但是,每當我單擊按鈕時,文本框都不會輸出“0”。 但是,當我嘗試這樣做時,它確實:

Public Class Project
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        If answerBox.Text.Length = 0 Then
            answerBox.Text= "0"
        End If
    End Sub
End Class

每當我聲明一個變量時,它都不起作用,但是當我不聲明時,它確實起作用。 我究竟做錯了什么?

雖然 David 和 Bryant1003 有正確的答案,但最終的代碼有點繞。 為了更嚴格的編碼:

Public Class Project
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        answerBox.Text = if(answerBox.Text.Length = 0, "0", answerBox.Text)
    End Sub
End Class

局部變量僅在前面的示例中用作臨時持有者。 If語句在更高的.Net版本中有效,而在VBA無效。 在這種情況下,使用IIf也是安全的。

當然,如果你對answerBox.Text做進一步的操作,你可以考慮賦值給一個臨時變量。 但是否需要這取決於您想要做什么。

txtAnsweranswerBox.Text並沒有像您認為的那樣相互鏡像。

在您的第一個示例中,您正在設置變量以將值存儲在文本框中。 然后,如果字符串的長度為 0,則將其設置為存儲“0”。 這不會將answerBox.Text設置為“0”。

而在您的第二個示例中,您正在更新文本框以顯示“0”,而不是未連接的變量。

如果你想在你的第一個例子中使用一個變量,你需要做

Public Class Project
Dim txtAnswer As String

  Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click

      txtAnswer = answerBox.Text

      If txtAnswer.Length = 0 Then
          txtAnswer = "0"
      End If

      answerBox.Text = txtAnswer
  End Sub
End Class

您可以期待TextBox.Text屬性自動更新,因為您更新了一個變量。 您需要告訴它使用變量中的值。

問題是您沒有將值分配回“answerBox”。

該變量填充(讀取:復制)到子文件第一行的 txtAnswer 中。 復制后,您需要在完成處理后將字符串放回文本框。 請參閱下面添加行的代碼;

Public Class Project
    Dim txtAnswer As String
    Public Sub button0_Click(sender As Object, e As EventArgs) Handles button0.Click
        txtAnswer = answerBox.Text
        If txtAnswer.Length = 0 Then
            txtAnswer = "0"
        End If
        ' The below line puts the value from the variable txtAnswer back into the textbox
        answerBox.Text = txtAnswer
    End Sub
End Class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM