2011-02-15 20 views
1

問題がどこにあるのでしょうか?コードはfrmFacilityから実行され、ユーザーコントロールにシフトします:ラインIf facilityForm.IsOnPrimaryView Thenプロパティを使用しているときにNull Refrence例外が発生する

Public Class frmFacility 
Private primaryBaseDay As Date 
Private isClassPrimaryView As Boolean = False 
Friend WithEvents BookCtrl As ucBookCtrl2 
Public Property Primary_BaseDay() As Date 
    Get 
     Return primaryBaseDay 
    End Get 
    Set(ByVal value As Date) 
     primaryBaseDay = value 
    End Set 
    End Property 

    Public Property IsOnPrimaryView() As Boolean 
    Get 
     Return isClassPrimaryView 
    End Get 
    Set(ByVal value As Boolean) 
     isClassPrimaryView = value 
    End Set 
    End Property 
Public Sub GotoDay(ByVal theDay As Date) 
    Primary_BaseDay = theDay 
    IsOnPrimaryView = True 
    BookCtrl.GotoDay(theDay) 
End Sub 
End Class 

    Imports frmFacility 
Public Class ucBookCtrl2 
Public Sub GotoDay(ByVal whichDay As Date, Optional ByVal MainFacilityUsed As String = "") 
Dim facilityForm As frmFacility 
If facilityForm.IsOnPrimaryView Then 
     moDoBooking.m_BaseDay = facilityForm.Primary_BaseDay 
     moDoBooking.m_CurrentDay = whichDay 
     ShowDay() 
     RaiseEvent ChangeOfDay() 
End Sub 
End Class 

、私はNullReferenceExceptionを取得します。理由を知っていますか?

私はそのシングルトンで作業する必要があるので、私はfrmFacilityの新しいインスタンスを追加するとき、それはでtrueに設定する必要がありながら、IsOnPrimaryModefalseに設定されているが、また、私は、facilityFormの新しいインスタンスを作成することはできません。 gotoday subからfrmFacility

答えて

3

facilityFormに何も設定していない場合は、frmFacilityという変数を宣言し、facilityFormと呼んだだけです。 facilityForm.IsOnPrimaryViewに電話すると、facilityFormはまだnullです。

+0

OK、ありがとうannaですが、実際には間違っている必要がありますが、新しいインスタンスを作成するときにtrueに設定されていませんか? – amir

+0

@amir恐らく 'frmFacility'の既存のインスタンスをそのメソッドに渡すか、それを同じクラスのプロパティを通して公開する必要があります。 –

1

あなたは実際にはfacilityForm singletonで作業していません。どこかに保管しなければなりません。たぶんPublic ClassShared test as New frmFacilityと書かれています。

フォームはインスタンス化されていないため、IsOnPrimaryViewプロパティをまだ持つことはできません。実際にはNothing

0

IsOnPrimaryViewプロパティを共有として設定する必要があります。そうしないと、NullReference例外が発生します。

関連する問題