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

时间:2013-01-10 18:16:18

标签: 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

2 个答案:

答案 0 :(得分:1)

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

如果您有一组通用的方法/属性,则需要公开两个用户控件,将它们重构为一个接口,并让两个用户控件都实现该接口。这样可以轻松地互换使用它们。

答案 1 :(得分:0)

在声明OperatorView时尝试使用Shared而不是Public。而且,就像tcarvin所说的那样,你可能希望在(项目编译选项)上使用“Explicit”或使用“Option Explicit”。