掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Control型の変数を動的にDirectCastできないでしょうか? (ID:145478)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
カスタムコントロールクラスを複数作っており、 それをコントロール型の引数に渡し、関数内でDirectCastした後、カスタムコントロールに実装したメソッドを呼んでいます。 カスタムコントロールの名前は、各基底クラス名の頭に「Custom」を付けています。 現在以下のようなコードでまかなっています。 Ctrl:コントロール型の変数 DoEnter:カスタムコントロールに実装したメソッド Select Case True Case (TypeOf Ctrl Is CustomButton) DirectCast(Ctrl, CustomButton).DoEnter() Case (TypeOf Ctrl Is CustomTextBox) DirectCast(Ctrl, CustomTextBox).DoEnter() Case (TypeOf Ctrl Is CustomComboBox) DirectCast(Ctrl, CustomComboBox).DoEnter() Case (TypeOf Ctrl Is CustomCheckBox) DirectCast(Ctrl, CustomCheckBox).DoEnter() Case (TypeOf Ctrl Is CustomRadioButton) DirectCast(Ctrl, CustomRadioButton).DoEnter() End Select しかし今後、特定の入力(日付の入力用など)に特化した新たなカスタムコントロールを作った場合、その度にわざわざ上のSelectCaseに追加しなくてはならなくなります。 そこで、コントロール型変数の中身の型を調べ、その型にキャストするような方法はないでしょうか? イメージ的には以下の通りです。 Dim T As Type = Ctrl.GetType DirectCast(Ctrl, T).DoEnter() しかしDirectCastの第二引数は変数にすることが出来ず、上記のコードはコンパイルエラーになります。 なので仕方なく今はSelectCaseで分岐させています。 何か方法がありそうな気はするのですが、行き詰ってしまいました。 もし動的キャストの方法があれば、ヒントでもかまいませんのでお教えいただけないでしょうか? よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.