2017-08-12 8 views
-1

この問題は何度も論文として扱われていますが、今回は異なると思います。私のVBプログラムでは、私はチェックボックスと画像を持っています。ユーザーがチェックボックスをクリックすると、表示される画像は不可視になります。問題はコードを書いたことですが、コンパイルするとエラーは発生しませんが、実行すると「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示され、画像には何も返されません。 コードは奇妙なことが他のラインについて問題がないということであるオブジェクトリファレンスがオブジェクトのインスタンスに設定されていない

If (DisplayImageCheckBox.IsChecked) Then 
     NaturePhoto.Visibility = Visibility.Visible 

    Else 
     NaturePhoto.Visibility = Visibility.Hidden 


    End If 

問題はライン2である非常に簡単です。 NaturePhoto.Visibility = Visibility.Visibleを削除した場合問題はありません。私がElseステートメントを削除し、Ifの後に行を残すと、問題が残っています。私が言ったように、NaturePhotoは消えて現れる写真ですが、DisplayImageCheckBoxは消えるチェックボックスですが、画像は消えません。私を助けてくれますか?私は解決する方法を知らない。

+0

「NaturePhoto」オブジェクトが初期化されていないと思います。 – OneFineDay

+0

イメージを初期化するにはどうすればよいですか?まだプロパティウィンドウで画像の名前を設定したときに初期化していませんか? –

+0

@RobertoChiaiese画像は何ですか?フォームにドラッグしたり、コード内に宣言したPictureBoxですか?たとえば、 'Dim NaturePhoto as Bitmap'やそれ以外のもの? –

答えて

-1

"オブジェクト参照がオブジェクトのインスタンスに設定されていません"というエラーは非常に有名です。これは、未定義オブジェクトのプロパティにアクセスしようとしていることを意味します。 Microsoft C# FAQ::の例から

使用しようとしている変数は 一度 をインスタンス化されたクラスのフィールド、パラメータ、またはローカル変数である可能性があるため、あなたの状況が この明示的ではありませんその後はnullに設定されました。

をデバッグしようとNULLであるNaturePhotoまたは可視性オブジェクトを見つける:fooがnullであることを考えると、 次のコードではとNullReferenceExceptionがスローされます。

+0

デバッグしようとすると、VSはVisibility.VisibleをVisibleに設定し、VisibilityをCollapsedに設定し、NaturePhotoをNothingに設定します。私は何を修正しなければならないのか分かりません(GUIのコード) –

+0

これで、「新しい」キーワードでNaturePhotoを初期化する必要があります。 NaturePhoto = new NaturePhoto()を試してください – pushStack

+0

これはコードによって異なります:NaturePhotoオブジェクトが以前に設定されていない場合は、If文の前に**初期化する必要があります。次に、コンパイルしてデバッグし、ヌルでないかどうかを確認します。 – pushStack