tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルSystem.NullReferenceException はハンドルされませんでした
記事No11068
投稿日: 2013/04/01(Mon) 10:17
投稿者Beginner
VB初心者の学生です。VB歴は1ヶ月です。

VB勉強のため、簡単なペイントソフトを作ってます。
picturebox1に描画した内容を保存するとき、以下のエラー文が表示されて解決できません。

 System.NullReferenceException はハンドルされませんでした。
  Message=オブジェクト参照がオブジェクト インスタンスに設定されていません。


'保存処理
Private Sub MenuItem1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
        Dim name As String = InputBox("名前を入力してください")
        PictureBox1.Image.Save("C:\" & name & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
        MsgBox("Cドライブに保存されました")
End Sub
    
ご教授よろしくお願いします!!

[ツリー表示へ]
タイトルRe: System.NullReferenceException はハンドルされませんでした
記事No11069
投稿日: 2013/04/01(Mon) 12:37
投稿者YuO
> picturebox1に描画した内容を保存するとき、以下のエラー文が表示されて解決できません。
>  System.NullReferenceException はハンドルされませんでした。
>   Message=オブジェクト参照がオブジェクト インスタンスに設定されていません。

この例外は,Nothingであるクラス型の変数に対して,メンバーアクセスを行おうとした場合に発生します。

この例外が発生したでIDEの例外アシスタントが起動するはずです。
# 当然,IDEから「デバッグ実行」を行っていることが前提です。
そして,「どの行でこの例外が発生したか」がハイライトされて表示されているはずです。
呼び出し履歴を辿るなりして自分の書いたコードまで戻り (今回はそのままでよいと思いますが),
変数やプロパティの値を見ていって下さい。

恐らく,PictureBox1.Imageを調べるとNothingになっているはずです。
PictureBoxのImageプロパティは,設定しない限りNothingのままになっています。
保存を要する場合は,Imageプロパティに適当なサイズのBitmapクラスのインスタンスを代入しておく必要があります。

ref) PictureBoxコントロールにグラフィックを描画するには? − @IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/458picboxdraw/picboxdraw.html

[ツリー表示へ]
タイトルRe^2: System.NullReferenceException はハンドルされませんでした
記事No11070
投稿日: 2013/04/01(Mon) 19:09
投稿者Beginner
> 恐らく,PictureBox1.Imageを調べるとNothingになっているはずです。
> PictureBoxのImageプロパティは,設定しない限りNothingのままになっています。
> 保存を要する場合は,Imageプロパティに適当なサイズのBitmapクラスのインスタンスを代入しておく必要があります。

わかりやすい回答ありがとうございました
リンクまでつけてくださって、本当に助かりました!!

インスタンスの代入で無事に保存できました^^

[ツリー表示へ]