我尝试过制作表格的实例,但没有一个有效。
此代码有效并打开和关闭“灯”:
Public Class Lamp
' declare field
Private lampColor As Color
Public Sub New()
' initialize field
lampColor = MainForm.lampShape.FillColor
End Sub ' New
Public Sub Switch()
' determine if lamp is on or off
If lampColor = Color.Silver Then
' turn on lamp
lampColor = Color.Yellow
Else
' turn off lamp
lampColor = Color.Silver
End If
' display color on lamp
MainForm.lampShape.FillColor = lampColor
End Sub ' Switch
End Class
此代码不起作用:
Public Class Lamp
' declare fields
Private lampColor As Color
Private main As New MainForm
Public Sub New()
' initialize field
lampColor = main.lampShape.FillColor
End Sub ' New
Public Sub Switch()
' determine if lamp is on or off
If lampColor = Color.Silver Then
' turn on lamp
lampColor = Color.Yellow
Else
' turn off lamp
lampColor = Color.Silver
End If
' display color on lamp
main.lampShape.FillColor = lampColor
End Sub ' Switch
End Class
我也尝试过很多其他项目,但都没有。
答案 0 :(得分:2)
由于你的类永远不会显示它创建的主要内容,但是你说你可以看到“方形”没有改变颜色,你很可能有2个实例使用的形式:VB应用程序框架创建的实例{ {1}}表单,然后是您在Startup
类中创建的表单。将Lamp
添加到构造函数(sub New),我打赌你会看到第二种形式。
来自评论:
我这样做之后,现在打开了两个表格
关键字main.Show()
会创建一个新对象。因此,虽然您的第二个类确实使用了表单实例,但它创建了自己的New
,它与VB创建和显示的不同。
假设表单是应用程序的主要表单,并且表单创建了类,这就是你想要的:
New
然后当你创建它时:
Public Class Lamp
Private lampColor As Color
Private main As MainForm ' no New!
Public Sub New(frm As MainForm)
main = frm ' store reference to the form passed
lampColor = main.lampShape.FillColor
End Sub ' New
...