簡體   English   中英

如何在Visual Basic中的類之間共享變量?

[英]How can I share a variable across classes in Visual Basic?

我有一個名為sum的變量,它是多個文本框中的值之和。

我有一個用於創建文本框的按鈕,其中每個文本框的值都添加到sum ,只要文本框內有一個值即可。

然后,我還有另一個按鈕來創建標簽,並且我希望label.Text值等於sum

即使在將變量label.Text public且將兩個類都label.Text public之后, label.Text值也始終為0。

這是我的代碼:

Public Class Form

Dim counter As Integer = 1
Dim locationy As Integer = 169
Public sum As Integer = 0

Public Sub btn_New_Click(sender As Object, e As EventArgs) Handles btn_New.Click

    Dim tBox_NewPrice As New TextBox
    tBox_NewPrice.Name = "tBox_NewPrice" & counter
    tBox_NewPrice.Size = New Size(74, 20)
    tBox_NewPrice.Location = New Point(207, locationy)
    Me.Controls.Add(tBox_NewPrice)

    counter = counter + 1
    locationy = locationy + 31

    If tBox_NewPrice.Text <> "" Then
        sum = sum + tBox_NewPrice.Text
    End If
End Sub

Public Sub btn_submit_Click(sender As Object, e As EventArgs) Handles btn_submit.Click
    Dim Label As New Label
    Label.Name = "label1"
    Label.Size = New Size(50, 50)
    Label.Location = New Point(20, 20)
    Me.Controls.Add(Label)
    Me.Refresh()
    Label.Text = sum

End Sub

末級

在這種情況下(試圖辨別為什么某個方法未達到我的期望),我發現如果我准確寫下代碼的每一行實際在做什么,而不是寫下我的期望,我可以找到原因問題。 您有兩個事件處理程序方法:

add事件處理程序執行以下邏輯:

  1. 創建一個新的文本框
  2. 命名
  3. 給它一個大小/位置
  4. 將其添加到窗體的控件集合中
  5. 將其text屬性添加到sum的值中

然后Submit事件處理程序執行此操作

  1. 創建一個新標簽
  2. 命名
  3. 給它一個大小/位置
  4. 將其添加到窗體的控件集合中
  5. 將其文本設置為sum的值

從未做過的事情是將它們添加到表單后“從文本框的text屬性中讀取”,並且允許用戶使用它們。 基本上,您永遠不會從用戶那里收集值,而只是在將它們添加到表單后立即檢查該屬性。 另外,您不會在文本屬性中預先填充一個值,因此在那個時間點它是一個空字符串。

提交事件處理程序需要以某種方式從輸入的文本框中收集值。 由於文本框是在每次添加事件處理程序提交時動態添加到表單的,因此需要運行“提交事件”頂部的類似內容:

sum = 0 
For each ctrl As Control in me.Controls 
  If TypeOf ctrl Is Textbox Then 
    dim txt As Textbox = DirectCast(ctrl, Textbox)
    dim i as Integer =0 
    If Integer.TryParse(txt.Text, i) Then 
       Sum = Sum + i 
    End If 
  End If 
Next 

發生的是,我們正在遍歷控件集合,並正在尋找文本框。 當我們找到一個時,如果它的TEXT屬性包含一個整數值,我們就將字符串轉換為一個整數,並將其加到sum上。

暫無
暫無

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

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