[1650] ドットネット型のオーバロード手順

投稿日 2018/10/07(Sun) 15:33:15
投稿者 通りすがり
参照先

ドットネット型から作成したインスタンスについて、「:」でインスタンスメソッドを呼び出せるのですが、オーバロードしている場合にうまく呼び出せていないようです。

下記のプログラム中、以下の行が動いてないように思われます。
>g:DrawLine(青ペン,0,0,この幅,この高さ)
試しに、引数を適当に書き換えてもエラーとなりません(一致する引数の数が無くてもエラーとならない)
(ほんとは、ラベルに色の付いた枠線を付けてる実験をしていた)
-------
ペン型は、ドットネット型(「System.Drawing.Pen」)を作ったもの
カラー型は、ドットネット型(「System.Drawing.Color」)を作ったもの

メイン画面を表示する
待機
終了

メイン画面とは
 ウィンドウを継承する
 はじめの手順
  この内容を「テストする」に変える
  この大きさを{200,200}に変える
  テスト対象というテストラベルを作る
   その位置と大きさを{20,20,130,130}に変える
   その内容を「どれ」に変える 
 終わり
終わり

テストラベルとは
 ラベルを継承する
 描画する時の手順
  【g】は、イベントのGraphics
  【青インク】は、カラー型から「FromName」を{「blue」}で呼び出す
  【青ペン】は、ペン型から{青インク,5.0}でインスタンスを作る
  g:DrawLine(青ペン,0,0,この幅,この高さ)
  青ペン:Dispose()
 終わり
終わり
-----

単一のMethodInfoからInvokeも試そうとしたのですが、型引数のリストを付けたGetMethodがうまくゆかず(おそらく同じ理由?)、こちらもうまくゆきませんでした。
overloadのないmethodの場合、method名のみのGetMethodはうまくゆくようです。

なお、Paintイベントは、使い方に合わせて、基底クラスのメソッドを呼び出すかどうか、呼び出す場合にもどのタイミングで呼び出すかを、派生したクラスが決める必要があるため、継承によるOnPaine(描画する手順)の上書きと、基底クラスの同手順の呼び出しが無いと、うまく利用できません(結果として、AddEventHandlerで活用可能なケースと、対応できないケースがあります)


関連一覧ツリー

をクリックするとツリーを一括表示します)

返信フォーム

(この投稿に返信する場合は下記フォームから投稿して下さい)
(1MBまで)
(英数字で8文字以内)

- 投稿修正/削除フォーム -
処理 No パスワード

▲ページの先頭へ

- WebForum -