我有一些IDE制作的代码,它们将文本框作为Subs。我需要将变量'printString'的值从一个Sub保留到另一个Sub。我的搜索似乎表明第一个sub需要变成一个函数,但是当我这样做时它会中断。
Private Sub txtSerialNumber_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSerialNumber1.Leave
'condition the scanned serial number
Dim serialNumber As String = txtSerialNumber1.Text
serialNumber = serialNumber.ToUpper()
serialNumber = serialNumber.Trim()
txtSerialNumber2.Focus()
'replace tokens
'read the label file into a string variable
Dim printString As String = My.Resources.Fuel_Cell_Label
'read the top position into a variable
Dim topPosition As String = My.Settings.prntLabelTop
'read the left position into a variable
Dim leftPosition As String = My.Settings.prntLabelLeft
'replace the tokens with values
printString = printString.Replace("[[Top]]", topPosition)
printString = printString.Replace("[[Left]]", leftPosition)
printString = printString.Replace("[[serial_1]]", serialNumber)
End Sub
Private Sub txtSerialNumber2_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSerialNumber2.Leave
'condition the scanned serial number
Dim serialNumber2 As String = txtSerialNumber2.Text
serialNumber2 = serialNumber2.ToUpper()
serialNumber2 = serialNumber2.Trim()
'reset the front panel controls
txtSerialNumber1.Text = ""
txtSerialNumber2.Text = ""
txtSerialNumber1.Focus()
'replace the last token
printString = printString.Replace("[[serial]]", serialNumber2)
'print the label string
Dim Printer As New Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6.Printer
Printer.Print(printString)
'MessageBox.Show(printString)
End Sub
是的,我是新手。
我如何保留该变量值?
答案 0 :(得分:1)
问题是Scope
之一。简而言之,在这种情况下:
Private Sub txtSerialNumber_Leave(...
Dim printString As String = My.Resources.Fuel_Cell_Label
printString
是一个局部变量,因为您在过程中声明了它(Dim
)。这每次都会创建一个新的。为了给它模块级范围,只需将它声明在任何subs:
Dim printString As String =""
Private Sub txtSerialNumber_Leave....
' it will retain the
End Sub
确保在符合逻辑时将其重置为“”,否则它将继续累积。在那个例子中,你不知道他们将留下哪一个,或者他们是否会重新输入文本,所以你需要重新考虑你是如何做到这一点的。某种“OK”或“完成”按钮用这两个事件中的代码调用sub是一种方式。
的更多信息答案 1 :(得分:1)
您可以将该值设置为如下属性:
Public Property Number() As Integer
Get
Return _count
End Get
Set(ByVal value As Integer)
_count = value
End Set
End Property
然后,您可以在程序中的任何位置调用该公共属性,并知道您将返回什么。如果您没有get和set,则可以返回属性中的值。
答案 2 :(得分:0)
如果您要使用这些类型的变量中的一些,为了保持组织有序,您可以创建一个模块并将公共变量放在模块中
通过单击Visual Studio顶部菜单上的Project,然后单击Add Module。
来执行此操作然后将Public变量添加到模块:
Module Module1
Public printString As String =""
End Module