- PR -

VB.NETでコントロール名を表す文字列からコントロールの作成方法

1
投稿者投稿内容
まさあき
会議室デビュー日: 2004/05/07
投稿数: 8
投稿日時: 2004-06-21 10:15
いつもお世話になっております。

コントロール名を表す文字列から実際のコントロールを作成する方法を教えてください。
ControlコレクションのAddメソッドを使ってコントロールを追加したいのですが
HELPを確認したところ、Addメソッドを呼ぶ前に追加するコントロールを生成(New)する必要があると記述されています。

生成するコントロール名はデータベースのテーブルに格納されているので、コントロール名
文字列から実際のコントロールをNewする必要があります。
VB6では可能だった以下のようなコントロール生成方法をVB.NETで実現する方法を
ご教授ください。

Dim c As Control
Set c = Controls.Add("VB.TextBox", "Text1") '文字列からコントロール生成

かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-06-21 12:37
手順は、
1. Assemblyオブジェクトを取得する。
2. Assembly#GetType()にクラス名(完全名で)を渡し、Typeオブジェクトを取得する。
3. Type#GetConstructor()でConstructorInfoオブジェクトを取得する。
4. ConstructorInfo#Invoke()でインスタンスを作成し、目的の型にキャストして完了。

Java APIのようにClass.ForName()一発コールで作成する方法を見つけることはできませんでした。

ここで、Assemblyオブジェクトの取得は、対象のクラスを含むかまたは、参照しているAssemblyを取得します。実行ファイルで参照されていれば、Assembly#GetExecutingAssembly()で取得できます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-21 14:03
これ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11007&forum=7
まさあき
会議室デビュー日: 2004/05/07
投稿数: 8
投稿日時: 2004-06-21 14:56
かずくんさん、Jittaさんありがとうございました。
Assemblyオブジェクトを使用してインスタンス作成するのですね。
過去ログと重複する質問をしてしまい、ご迷惑おかけしました。
1

スキルアップ/キャリアアップ(JOB@IT)