我创建了两个具有不同用户界面的用户控件。根据用户所做的选择,我的类将使用其中一个接口。因为只有在用户做出选择之后我才知道,所以我不能提前声明用户控件,所以我创建了一个公共变量,以便稍后为其分配正确的用户控件。
当我试图访问用户控件上的控件(文本框)时发生错误。但是,如果我声明用户控件而不将其分配给公共变量,则不会得到错误。此外,如果我将用户控件分配给公共变量,因为它被声明,那么我也不会得到错误。我确实需要能够在两个用户控件之间进行选择。我不知道该怎么办。我错过什么了吗?谢谢你的帮助。
Public Class VesselData
Public RCAVesselData
Public AOLVesselData
Public Sub New()
If Main.UserSelectedModule = "Arrival on Location" Then
OperatorView = New AOLVesselData 'User Control 1
ElseIf Main.UserSelectedModule = "Running Conventional Anchors" Then
OperatorView = New RCAVesselData 'User Control 2
End If
OperatorView.txtDistanceToFairlead.text = "A" 'THROWS MissingMemberException - Public member 'txtDistanceToFairlead' on type 'AOLVesselData' not found.
Dim Test as New AOLVesselData
Test.txtDistanceToFairlead.text = "A" 'DOES NOT THROW EXCEPTION
End Sub
问题是您正在访问一个不存在的成员。从您发布的代码中,AOLVesselData
和RCAVesselData
类,看起来RCAVesselData
类没有txtDistanceToFairlead
成员。
如果你有一个公共的方法/属性集,你希望两个用户控件都公开,重构它们为一个接口,并让两个用户控件实现该接口。
尝试在声明OperatorView时使用Shared而不是Public。而且,就像tcarvin说的,你可能想要打开"Explicit"(项目编译选项)或使用"Option Explicit"。