Public Shared myData As String = Label2.Text
时间: 2024-02-02 10:02:46 浏览: 22
这种写法是错误的,因为在定义 myData 变量时,Label2 控件还未被创建,所以 Label2.Text 属性是无法获取的。
正确的做法是,在需要使用 Label2 的窗体中,通过控件的名字来获取控件实例,然后再访问它的 Text 属性。例如:
在 Form1 中,定义公共变量 myData:
```
Public Shared myData As String = ""
```
在 Form2 中,通过控件的名字获取 Label2 实例,并把它的值赋给 myData 变量:
```
Dim label2 As Label = Form1.Controls("Label2")
Form1.myData = label2.Text
```
这样就可以在不同的窗体之间共享 Label2 的值了。需要注意的是,如果 Label2 控件的访问修饰符是 Private,则不能在其他窗体中直接访问,需要修改访问修饰符或者提供公共的访问方法。
相关问题
Public Shared myData As String = Label1.Text
这段代码不能正确运行,因为静态成员(Shared 成员)不能访问非静态成员。Label1 是一个非静态成员,不能被直接访问。如果需要访问 Label1 的文本内容,可以在类中创建一个实例(对象),然后通过对象来访问 Label1。例如:
```
Dim myForm As New Form1() ' 创建 Form1 的实例
Public Shared myData As String = myForm.Label1.Text ' 通过实例来访问 Label1 的文本内容
```
但是要注意,这种方式可能会导致内存泄漏,因为静态成员会一直存在于内存中,而实例可能会被销毁。所以最好不要在静态成员中保存窗体控件的引用。
Dim myForm As New Form1() ' 创建 Form1 的实例 Public Shared myData As String = myForm.Label1.Text ' 通过实例来访问 Label1 的文本内容
这段代码在静态成员中使用了 myForm 的实例来访问 Label1 的文本内容,但是这种方式可能会导致内存泄漏。因为静态成员会一直存在于内存中,而实例可能会被销毁,所以最好不要在静态成员中保存窗体控件的引用。
如果需要在多个类之间共享数据,可以使用其他的方式来实现。例如,可以将数据保存在配置文件中,或者使用数据库来存储数据。如果需要在窗体控件之间共享数据,可以使用事件、委托或者属性等方式来实现。