2

我创建了两个具有不同用户界面的用户控件。根据用户所做的选择,这些接口之一将在我的课程中使用。由于直到用户做出选择后我才知道,我无法提前声明用户控件,因此我创建了一个公共变量,以便稍后分配正确的用户控件。

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

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
4

2 回答 2

1

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

如果您有一组通用的方法/属性,您希望两个用户控件都公开,请将它们重构为一个接口,并让两个用户控件都实现该接口。这将使它们易于互换使用。

于 2013-01-10T21:07:00.020 回答
0

在声明 OperatorView 时尝试使用 Shared 而不是 Public。而且,就像 tcarvin 所说,您可能想要打开“显式”(项目编译选项)或使用“显式选项”。

于 2013-01-10T19:27:40.913 回答