2

ユーザーインターフェイスが異なる2つのユーザーコントロールを作成しました。ユーザーの選択に応じて、これらのインターフェースの1つが私のクラスで使用されます。ユーザーが選択するまでわからないため、事前にユーザーコントロールを宣言できないため、後で正しいユーザーコントロールを割り当てるためのパブリック変数を作成しました。

ユーザーコントロールのコントロール(テキストボックス)にアクセスしようとすると、エラーが発生します。ただし、パブリック変数に割り当てずにユーザーコントロールを宣言しても、エラーは発生しません。また、宣言されているパブリック変数にユーザーコントロールを割り当てた場合も、エラーは発生しません。ただし、実際には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

問題は、存在しないメンバーにアクセスしていることです。あなたが投稿したコードから、AOLVesselDataおよびRCAVesselDataクラスの、クラスにメンバー RCAVesselDataがないようです。txtDistanceToFairlead

両方のユーザー コントロールが公開することが予想されるメソッド/プロパティの共通セットがある場合は、それらをインターフェイスにリファクタリングし、両方のユーザー コントロールにそのインターフェイスを実装させます。これにより、それらを交換して使用することが容易になります。

于 2013-01-10T21:07:00.020 に答える
0

OperatorView を宣言するときは、Public ではなく Shared を使用してみてください。そして、tcarvin が言ったように、「Explicit」をオンにするか (プロジェクトのコンパイル オプション)、「Option Explicit」を使用することをお勧めします。

于 2013-01-10T19:27:40.913 に答える