Nullについてのエラー
投稿者 shu  (社会人)
投稿日時
2012/6/14 17:16:41
Dim g~
g.Drawing~
の間にgに何かインスタンスを代入しましょう。
g.Drawing~
の間にgに何かインスタンスを代入しましょう。
投稿者 るきお  (社会人)
投稿日時
2012/6/14 20:23:38
クラスのメソッドやプロパティの大多数はインスタンスに対して使用する必要があります。
インスタンスがない状態でメソッドやプロパティを使用するとNullReferenceExceptionが発生します。
たとえば、次の例ではStringクラスのインスタンスがない状態でLengthプロパティを使おうとしているのでNullReferenceExceptionが発生します。
GraphicsクラスのDrawLineメソッドもそうです。
インスタンスをどのように取得するかの方法はさまざまです。よく見かけるのはNewを使用する方法ですが、今回はNewの出番はありません。
このあたりの事情は以下の記事で解説しているので参考にしてください。
初級講座第5回 メソッドと関数
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard5.htm
初級講座第9回 クラスの使い方
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard9.htm
今回の例を簡単に解決する例を紹介します。
この例はPictureBox1に対して描画を行う場合です。
これでインスタンスの問題は解決しますが、グラフィックのセオリーからははずれています。
セオリーではPaintイベントで描画を実行することになっておりその場合は次のようにします。
インスタンスがない状態でメソッドやプロパティを使用するとNullReferenceExceptionが発生します。
たとえば、次の例ではStringクラスのインスタンスがない状態でLengthプロパティを使おうとしているのでNullReferenceExceptionが発生します。
Dim St As String
MsgBox(St.Length)
GraphicsクラスのDrawLineメソッドもそうです。
インスタンスをどのように取得するかの方法はさまざまです。よく見かけるのはNewを使用する方法ですが、今回はNewの出番はありません。
このあたりの事情は以下の記事で解説しているので参考にしてください。
初級講座第5回 メソッドと関数
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard5.htm
初級講座第9回 クラスの使い方
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard9.htm
今回の例を簡単に解決する例を紹介します。
この例はPictureBox1に対して描画を行う場合です。
Dim drawpen As Pen = Pens.Red
Dim ixx1 As Single = 10
Dim iyy1 As Single = 10
Dim ixx2 As Single = 100
Dim iyy2 As Single = 120
Dim g As Drawing.Graphics
g = PictureBox1.CreateGraphics
g.DrawLine(drawpen, ixx1, iyy1, ixx2, iyy2)
これでインスタンスの問題は解決しますが、グラフィックのセオリーからははずれています。
セオリーではPaintイベントで描画を実行することになっておりその場合は次のようにします。
Private Sub PictureBox1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Dim drawpen As Pen = Pens.Red
Dim ixx1 As Single = 10
Dim iyy1 As Single = 10
Dim ixx2 As Single = 100
Dim iyy2 As Single = 120
e.Graphics.DrawLine(drawpen, ixx1, iyy1, ixx2, iyy2)
End Sub
作成しているプログラムなんですが,
・
・
Dim g As Drawing.Graphics
g.DrawLine(drawpen, ixx1, iyy1, ixx2, iyy2) ←ここに変数 'g' は、値が割り当てられる前に使用されています。Null 参照の例外が実行時に発生する可能性があります。
・
・
とエラーが出ます.
どなたか教えていただけないでしょうか?
null refarence exceptionはハンドルされませんでした.とでています.