2011-07-17 35 views
1

フォームを複数回開くことはできますか?同じフォームを複数回開く

押しform2.show

ボタン1 ボタン1 Form2が

押しボタン1をもう一度可能であれば、別のForm2が古いのForm2に次の

を開き、Form1のボタンはすべて殺すことができ 開きますForm2のウィンドウが開きますか?

答えて

2

もちろん可能です。同じフォームの2つのインスタンスだけを暗くします。

Public Class Form1 

    Private m_WindowList As New List(Of Form2) 

    Private Sub OpenWindowButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenWindowButton.Click 
     OpenWindow() 
    End Sub 

    Private Sub CloseWindowsButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseWindowsButton.Click 
     CloseWindows() 
    End Sub 

    Private Sub OpenWindowsButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenWindowsButton.Click 
     Dim WindowCount As Int32 
     If Int32.TryParse(WindowCountTextBox.Text, WindowCount) Then 
      OpenWindows(WindowCount) 
     End If 
    End Sub 

    Private Sub OpenWindow() 
     Dim NewWindow As New Form2 
     m_WindowList.Add(NewWindow) 
     NewWindow.Show() 
    End Sub 

    Private Sub OpenWindows(ByVal Count As Int32) 
     For i = 1 To Count 
      OpenWindow() 
     Next 
    End Sub 

    Private Sub CloseWindows() 
     For Each Window In m_WindowList 
      Window.Close() 
      Window.Dispose() 
     Next 
     m_WindowList.Clear() 
    End Sub 

End Class 
+0

オブジェクト参照がオブジェクトのインスタンスに設定されていません。 m_WindowList.Add(NewWindow) その行の問題 – SirAudens

+0

ああ、申し訳ありませんが、m_WindowListの宣言に追加してください。私は上記の答えでそれを修正しました。 –

+0

甘い。あなたはすごいね! – SirAudens

1
Dim MyNewForm2 = New Form2 
MyNewForm2.Show 
+0

....今私は愚かだと感じる...そのシンプルな...ありがとう! – SirAudens

+0

ちょうど好奇心から。 1つのボタンを作成してテキストボックス内の数字のように多くのウィンドウがどのように記述されるかを開く方法はありますか?これまでに何が行われているのかをすべて無効にすることもできますか? – SirAudens

+0

@SirAudens、それを達成するにはいくつかの方法があります。一つの簡単な方法は、ローカル配列内のすべての新しいウィンドウへの参照を保持し、次に2番目のボタンをクリックしてclose/kill allをクリックすることです。 – Shimmy

関連する問題