Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
イベントを呼び出し
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30336#CommentId83299
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
るきお
 (社会人)
投稿日時
2018/6/6 08:16:24
ゆうさくさんのプログラムがうまく動かない理由が不正確でしたので補足します。
(ゆうさくさんのプログラムではなく、私が少しいじってみたプログラムをもとに書いてしまいました。)
ゆうさくさんのプログラムがエラーになら直接的な理由は型変換ができないからです。
Form1_Paintの第2引数はPaintEventArgs型です。
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
ゆうさくさんはこれを下記のように呼び出そうとしています。
Call Form1_Paint(Me, EventArgs.Empty)
この第2引数はEventArgs型です。
EventArgs型からPaintEventArgs型への型変換は定義されていないためエラーになります。
一般的に、型Aから型Bに変換をする場合、
型Aと型Bが異なっていても、下記の場合成功します。
・型Bが型Aの基底クラスの場合。
・型Bが型Aが実装しているインターフェースの場合。
例外として特別に型変換がプログラムされている場合(=CTypeがオーバーロードされている場合)も型変換は成功します。
今回はこのどれでもないので失敗します。
次のプログラムで確認できます。
Dim
typeA
As
EventArgs = EventArgs.Empty
Dim
typeB
As
PaintEventArgs =
Nothing
typeB = typeA
ちなみに Nothing は必ず代入できるので、
Call Form1_Paint(Me, Nothing)
ならば呼び出す自体は可能です。