vb中如何跨窗口调用变量

vb中如何跨窗口调用变量
2024-11-01 11:43:44
推荐回答(3个)
回答1:

主要有三种办法:
1、模块里的公共变量
添加一个模块Module,在模块里声明变量。
Public FormValueA As Long
你可以在任何窗体里直接用FormValueA调用它。
但这个办法最不可靠,只适合在一些非常简单的小程序里使用。
因为这种变量任何窗体、模块都可以改变它的值。如果你在其他的窗体、模块意外地改变了它的值,或者是在不恰档培当的时机改变它的值,很容易造成程序错误。

2、公共变量
假如有个窗体叫Form1,在窗慧蠢态体里声明一个公共变量FormValueB。
Public FormValueB As Long
那么你在其他窗体里可以用Form1.FormValueB调用它。
这个办法也不可靠,在一些正规程序设计里应该被避免使用。
因为任何一个外部的过程都有可能改变这个值,也容易出现混乱。
但它至少比第一种好一些。

3、给窗体添加属性
假如有个窗体叫Form2,在窗体里声明一个属性FormValueC。
在窗体里声明一个私有变量FormValueD。
Private FormValueD As Long

Public Property Get FormValueC() As Long
'输出属性值
FormValueC = FormValueD
End Property

Public Property Let FormValueC(ByVal vNewValue As Long)
'输入属性值
FormValueD = vNewValue
End Property
你在其他窗体里可以用Form2.FormValueC调用它。
在Form2窗体里,这个属性的值实际保存在FormValueD变量里。
这个办法最复杂,但这是比较正规的做法。
你可以在输入、输出过程中对变量进行一些检测、判断,这样可以避免外界的调用对这个窗体造成干扰。
属性的值有时候未必在窗体里是一个变量。
比如:你写一个登记个人信息的窗体。假如输入了身份证号码,那么生日属性可以从身份证号码里提取。这样,生日属性就不必有个专门的变量存储,类似这样。
Public Property Get Birthday() As Long
'输出属性值
……从身份证号码提取生日……
Birthday = 被提取出来的生日前源
End Property
表面上看,你调用了Form3.Birthday好像从变量赋值一样获得生日。但实际上这个属性的值是属性的过程算出来的。

回答2:

你好,建议你插入一个模块(Module),然后在模块中声明你的全局变量
例如在Module1中做如下声明
Public version As String

'而赋值过盯做程可以在你的窗体代码中进行,例如
Private Sub Form_Load()
version = "3.1 beta"
End Sub
==================分隔线=======================
如果帆世你一定要在窗体2中调用窗体1的变量,则需要在窗体1将其声明为全局变量:
Public test As String
但是这样做并不会对这个变量赋值
引用方式是:
MsgBox Form1.test
可以看到凯轿衡弹出内容为空

回答3:

写在公有过程或者函数里,也就是public