俺用自定义类解决
'*************** 用于窗口中的变量传递 *******************
'初始化:窗口的AfterLoad事件 Dim a As New zxb窗口级变量(e.Form)
'赋值: Dim a As zxb窗口级变量 = e.Form.panel.Controls("自定义变量")
' a.Var(变量名) = 值 '变量不存在就新增变量
'取值: Dim a As zxb窗口级变量 = e.Form.panel.Controls("自定义变量")
' 值 = a.Var(变量名) '变量不存在返回Nothong
Public Class zxb窗口级变量
Inherits System.Windows.Forms.Control
Private _Vars As Dictionary(Of String, Object) '变量集合
Sub New(ByVal frm As WinForm.Form)
MyBase.New()
me.Visible = False
MyBase.Name = "自定义变量"
_Vars = New Dictionary(Of String, Object)
frm.Panel.Controls.Add(Me) '加入到窗口的Panel,注意必须从Panel中取出
End Sub
Public WriteOnly Property addVar(ByVal name As String) As Object
Set(ByVal value As Object)
If _Vars.ContainsKey(name) Then
MessageBox.Show("变量重复,请核对!", "提醒:", MessageBoxButtons.OK)
Else
_Vars.Add(name, value)
End If
End Set
End Property
'获取或设置变量的值
Public Property Var(ByVal Name As String) As Object
Get
If _Vars.ContainsKey(Name) Then
Return _Vars(Name)
Else
Return MessageBox.Show("变量不存在,请核对!", "提醒:", MessageBoxButtons.OK)
Return Nothing
End If
End Get
Set(ByVal value As Object)
If _Vars.ContainsKey(Name) Then
'存在,就赋值
_Vars(Name) = value
Else
'不存在,就新建变量赋值
addVar(Name) = value
End If
End Set
End Property
End Class