2009-05-30 13 views
0

私はいくつかのユーザーコントロールがロードされている分割されたコンテナ内にpanel2を持っています。パネル1には終了ボタンがあり、Panel2にロードされたユーザーコントロールの1つにあるサブルーチンの1つを呼び出したいとします。vb.netユーザーコントロールでサブルーチンを呼び出す

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click 
     Dim dialogMessage As DialogResult 
     Dim a As New ucTimeTracker 

    dialogMessage = MessageBox.Show("Are you sure you want to exit?", "Exit Ready Office Assistant?", _ 
    MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) 

    If dialogMessage = Windows.Forms.DialogResult.Yes Then 

     ucTimeTracker.autoWriteFileOnExit() 
     Me.Close() 

    Else 
     Return 
    End If 

End Sub 

この行が問題になります。

ucTimeTracker.autoWriteFileOnExit() 

私は(非共有メンバーへの参照はオブジェクト参照が必要です)取得しています。あなたが名前である方法を、参照するためにucTimeTrackerを使用しているsplitContainer.Panel2

答えて

0

にロードされucTimeTrackerという名前のユーザーコントロール上の

私はautoWriteFileOnExitを(呼び出すためにfrmMain.SplitContainer.Panel1上の終了ボタンをしたいです)クラスの先ほどの方法では、そのクラスのインスタンス(Dim a As New ucTimeTracker)を作成します。したがって、使用するインスタンスであればa. autoWriteFileOnExit()を呼び出してください。 ucTimeTrackerがフォーム上のコントロールである場合は、代わりにそのコントロールの名前を使用する必要があります。

これを理解するには、スタティックメンバーとインスタンスメンバーの違いを理解する必要があります。静的メンバーには、クラスのインスタンスを作成する必要なしに、クラスから直接アクセスできます。インスタンスメンバーを使用するには、まずクラスのインスタンスが必要です。あなたは、一例としてのInt32クラスで見ることができます:(これは常に真実ではないですが)

' call a static method in the Int32 class, that returns an Int32 instance' 
Dim asInt As Int32 = Int32.Parse("14") 
' call an instance method on the Int32 instance, that will act on the data in ' 
' that instance, returning a string representation of its value ' 
Dim asString As String = asInt.ToString() 

通常の静的メソッドは、クラス内に保持されたデータには作用しないが、むしろメソッドに渡されたデータに作用しますスルーパラメータ。インスタンスメソッドは、その特定のインスタンスの内部データにアクセスし、そのデータに作用することができます(上記の例のように)。

1

インスタンス名の代わりにユーザーコントロールクラス名ucTimeTrackerが使用されているようです。デザインビューでユーザーコントロールをクリックし、プロパティビューに「名前」プロパティがあります。 nameプロパティの値を使用します(おそらくucTimeTracker1)の代わりに:

ucTimeTracker1.autoWriteFileOnExit() 
+1

あなたはそれが何もしないように、彼は同様に薄暗い彼のコードから、新しいucTimeTrackerを削除sugeestが、混乱に追加する必要があります。 – pipTheGeek

+0

右、pipTheGeekのコメントを読んで;) –

関連する問題