フォームを動的に実行したい への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 ケンケン  (社会人) 投稿日時 2024/11/1 10:07:24
ありがとうございます。
クラス名を指定する方法で解決しました。
投稿者 ケンケン  (社会人) 投稿日時 2024/11/1 09:34:38
言葉足らずで申し訳ございません。
管理メニューが管理職、一般社員で、表示される画面が異なります。

 管理職            一般社員
  遷移画面が4画面      遷移画面が3画面 
   社員情報画面(inf)          売上画面(uri)
   売上画面 (uri)           仕入画面(shiire) 
   決済画面   (kesai)
   仕入画面   (shiire)

権限によって画面を制限したいので動的画面と表現しました
   遷移画面を動的にしたかったので質問を致しました。
投稿者 KOZ  (社会人) 投稿日時 2024/11/1 01:17:57
前の質問が解決したなら、解決済にしてください。

さて、何をもって”動的”とするのか不明確ですが、たとえばこんな方法があります。

ジェネリックを使う方法
Sub CreateAndShow(Of T As {Form, New})()
    Dim frm As New T()
    frm.Show()
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    CreateAndShow(Of Form2)()
End Sub


クラス名を指定する方法
Sub CreateAndShow(formClassName As String)
    Dim formType As Type = Type.GetType(formClassName)
    Dim instance As Form = DirectCast(Activator.CreateInstance(formType), Form)
    instance.Show()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    CreateAndShow("WindowsApp1.Form2")
End Sub

投稿者 ケンケン  (社会人) 投稿日時 2024/10/31 11:12:01
            Dim form2 As New Form2()
            form2.Show()
    ↑ 上記のロジックで静的画面が表示されますが
      動的に画面を起動したいですが何方か分かる方ご教授お願いします。