重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
先设计好Form1和Form2。在
创新互联公司是一家专业提供哈密企业网站建设,专注与做网站、网站建设、H5响应式网站、小程序制作等业务。10年已为哈密众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
Private Class Form2中输入
Public Event ChangeValue(ByVal value As String) '是string还是其它的看你需要了
在Form2的Closed事件:
Private Sub Form2_Closed() Handles Me.Closed
RaiseEvent ChangeValue(TextBox1.Text)'如果是数值类型的话用下面这个:
'RaiseEvent ChangeValue(Val(TextBox1.Text))
End Sub
在Form中定义x:
Dim x As String '是String还是数值类型看你需要了,要和上面的统一
在Form1中写一个处理值的函数。值哪来?别管它
Private Sub ProcessValue(ByVal value As String) '记得统一
x = value
End Sub
在Form1中Button1的Click事件中:
Private Sub Button1_Click() Handles Button1.Click
Dim f2 As New Form2
AddHandler f2.ChangeValue,AddressOf ProcessValue
f2.Show()
End Sub
楼下的更简单啦
参考这个:
先在项目属性中的设置里设值
改变值并保存:
My.Settings.myColor = Color.AliceBlue
My.Settings.Save()
当窗体加载时使用这个设置:
Me.BackColor = My.Settings.myColor
C返回局部变量的值也没问题啊
只是如果这个局部变量是指向栈上的内存的指针,由于函数结束后活动栈被清空,会导致指针失效。
VB.NET不支持指针语法,它不可能返回指向栈上的指针,所以用不着担心这个问题。
你的理解
第一点理解是正确的,不过和这个问题关系不大。因为引用类型本来就不是分配在栈上的,它当然就不受函数的影响。
第二点,那个只是个语法问题。VB6没有Return语句,所以它必然有另外一种语法来表明函数的返回值。这个和函数能否返回正确的对象没有关系,就是一种表明函数返回值的语法。
编译器确实定义了一个和函数同名的变量,那个变量就是一个普通的局部变量,作用域就在函数的局部域里。这个变量没什么特别的,就是编译器会在函数结束时把这个变量的值作为函数的返回值返回而已。
你这个函数只可能返回一个值0。因为你没有给aaa赋什么值,其默认值为0。
一般来说,函数中的值是否返回是由编程者来决定的。如果返回a的值,则作以下更改:
Private Function aaa() As Integer
Dim a, b As Integer
a=1
b=2
aaa=a '添加这条语句,返回a
End Function
要返回多个值一般通过自定义数据类型来实现。如下例定义了有两个子项的自定义数据类型,可以返回两个值。(你定义了几个子项就可以返回几个)
VB6新建一工程,在窗体上拖入一个按钮控件,然后进入代码区,删除所有代码后,粘贴以下代码即可。
Option Explicit
Private Type ABC '自定义数据类型ABC,内有两小项x,y
x As Long
y As Long
End Type
Private Sub Command1_Click()
Dim k As ABC
k = aaa(5, 6) '调用函数
Print k.x, k.y '将两个返回值打印到窗体上
End Sub
Private Function aaa(a As Integer, b As Integer) As ABC
aaa.x = a * 10 '函数的第一个返回值
aaa.y = b * 100 '函数的第二个返回值
End Function
效果图:
还有一种方式,不太好理解,这里不示例了。