尝试访问分配给公共变量vb.net的用户控件上的文本框时出错



我创建了两个具有不同用户界面的用户控件。根据用户所做的选择,我的类将使用其中一个接口。因为只有在用户做出选择之后我才知道,所以我不能提前声明用户控件,所以我创建了一个公共变量,以便稍后为其分配正确的用户控件。

当我试图访问用户控件上的控件(文本框)时发生错误。但是,如果我声明用户控件而不将其分配给公共变量,则不会得到错误。此外,如果我将用户控件分配给公共变量,因为它被声明,那么我也不会得到错误。我确实需要能够在两个用户控件之间进行选择。我不知道该怎么办。我错过什么了吗?谢谢你的帮助。

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

问题是您正在访问一个不存在的成员。从您发布的代码中,AOLVesselDataRCAVesselData类,看起来RCAVesselData类没有txtDistanceToFairlead成员。

如果你有一个公共的方法/属性集,你希望两个用户控件都公开,重构它们为一个接口,并让两个用户控件实现该接口。

尝试在声明OperatorView时使用Shared而不是Public。而且,就像tcarvin说的,你可能想要打开"Explicit"(项目编译选项)或使用"Option Explicit"。

最新更新