- 締切済み
VB2005にて開発しております。
VB2005にて開発しております。 子フォームを開くイベントで変数は使えないのでしょうか? Dim FormName as string FormName = "ClsF_100" FormName.Show(Me) 御教示宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- rinrin326
- ベストアンサー率0% (0/0)
参考)http://dobon.net/vb/bbs/log3-24/14779.html 上記サイトが参考にならないでしょうか? 後#2さんの補足にあるのエラーですが、Type変数(t)がNothigじゃないですか?
- Rilakkuma_san
- ベストアンサー率32% (33/101)
こんばんわ。 理解力が足りないのかイマイチやりたい事がわかりません。 もうちょっと具体的に処理を書くと回答がつきやすいと思います。 例えば、Form1からShow関数でForm2を表示させる時に引数valueを渡して Form2上の処理を引数valueで振り分けたい、とか。 上記のような質問であれば Show関数をOverloadsするとか FormのNewで引数を渡すようにするとか 回答に明確な事が書けます。
- temtecomai2
- ベストアンサー率61% (656/1071)
どういう用途で使うんでしょうかね。 たとえば別アセンブリでフォームを作っておいて、今回のアプリからアドインのように呼び出すとか? 一応サンプルがありました。 下記 URL の後半にフォームのクラス名を文字列で指定するサンプルがあります。 http://dobon.net/vb/dotnet/programing/createinstancefromstring.html ただ VB 2008 で試したところ System.Reflection.Assembly.LoadFile() の引数には絶対パスをしていする必要があるようなので、以下のように変えました。 Dim myPath As String = System.Reflection.Assembly.GetExecutingAssembly().Location Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(myPath) Dim t As Type = asm.GetType("WindowsApplication1.ClsF_100") Dim f As Object = t.InvokeMember(Nothing, System.Reflection.BindingFlags.CreateInstance, Nothing, Nothing, Nothing) Dim result As Object = t.InvokeMember("ShowDialog", System.Reflection.BindingFlags.InvokeMethod, Nothing, f, Nothing)
補足
早速のご回答ありがとうございます。 やってみました…が以下の部分でエラーが出ます。 Dim f As Object = t.InvokeMember(Nothing, System.Reflection.BindingFlags.CreateInstance, Nothing, Nothing, Nothing) エラーの内容は 「オブジェクト参照がオブジェクト インスタンスに設定されていません」 です。 何か私の記述がおかしいのでしょうか? ご教示頂ければ幸いです。
- OMEGAT
- ベストアンサー率70% (455/642)
.Showはフォームオブジェクトに対するメソッドなので文字型の変数には使えません。 すでにデザイン済みのForm2を表示する場合には、 Form2.Show() と書きますが、Fというフォームオブジェクトを使い、 Dim F As Form = New Form2 F.Show() と書くことも出来ます。 コードだけで新たなフォームを作成し、表示することもでます。 Dim F As Form = New Form F.Text = "フォームタイトル" F.Show()
お礼
説明不足だったようで申し訳ございません。 既に出来上がっているフォームを 変数を使って起動したい…のでございます。 フォームが100以上ありますので 変数で処理したいなぁ…というのが要望でございます。 引き続きご教示よろしくお願い致します。
お礼
状況説明と目的が上手に説明できず申し訳ございません。 皆様からの意見を参考に…やっとできました。 Dim f As Object = t.InvokeMember _(Nothing,System.Reflection.BindingFlags.CreateInstance, Nothing, Nothing, Nothing) Dim result As Object = t.InvokeMember _("ShowDialog",System.Reflection.BindingFlags.InvokeMethod, Nothing, f, Nothing) Me.WindowState = FormWindowState.Normal ありがとうございました。