任意のフォームを表示したいのですが。。

解決


タケダ  2003-12-26 17:10:37  No: 81175  IP: [192.*.*.*]

業務別にフォームを表示したいのですが、定型で表示するのではなく
表示したいフォーム名をデータにもたして、そのデータを読み表示した
と思うのですが、どのようにしたら出来るのかお教えください

☆通常のフォーム表示
  Dim f as フォーム名
  f = New フォーム名
  f.ShowDialog
上記のフォーム名を変数にしたいのです

編集 削除
ねろ  2003-12-26 18:02:21  No: 81176  IP: [192.*.*.*]

VB.NETだよね。
要するにデーターを読み込んで、そのデーター別に、
異なったFormを表示したいということかしら。
Formの名前を変えるだけなら簡単すぎるものね。
あらかじめ表示したいFormのクラスを宣言して、
データーを読み込んでSelect〜Caseで判断してFormを起動する。
これも簡単か、何か全く違うことを聞いているのかな?
>定型で表示するのではなく
定型ってなんだ?

編集 削除
魔界の仮面弁士  2003-12-26 18:04:57  No: 81177  IP: [192.*.*.*]

各フォームの完全限定名が分かるなら、可能ですよ。
(完全限定名は、「Me.GetType().AssemblyQualifiedName」などで取得出来ます)

(1) TypeクラスのGetTypeメソッドを使って、完全限定名から、特定のフォームを表すTypeを取得。
(2) 得られたTypeのGetConstructorメソッドを使って、既定のコンストラクタを表すConstructorInfoを取得。
(3) そのConstructorInfoのInvokeメソッドを使って、目的のFormオブジェクトを作成。
(4) 最後に、それをShowDialogしてできあがり。



コードで書くと、こんな感じです。
'=========

Dim S As String
S = 完全限定名

Dim F As System.Windows.Forms.Form = DirectCast(System.Type.GetType(S).GetConstructor(New System.Type() {}).Invoke(Nothing), System.Windows.Forms.Form)

F.ShowDialog()

編集 削除
タケダ  2003-12-26 19:04:45  No: 81178  IP: [192.*.*.*]

定数の間違いです<(_ _)>>ねろさん


魔界の仮面弁士  様

解決しました
ほんとうにありがとうございました
これで、設計とおりに事がはこびそうです

編集 削除