0

私は VB.net を初めて使用するので、質問があります。助けていただければ幸いです。

ボタンがオンになっているフォームがあり、ボタンを押すとフォーム 2 が開きます。次に、フォーム 2 が開いているときにボタンを押すと、フォーム 1 のボタンがフォーム 2 を閉じるようにします。

ボタンクリックサブ内に次のコードがあります。

Dim openForm As Form2
openForm =New Form2()


If Application.OpenForms. OfType(Of Form2).Any() Then

Form2.Close()

Else

openForm.Show()
openForm = Nothing

End If

最初にボタンを押すと、フォーム 2 が開きます。ただし、もう一度ボタンを押しても何も起こらず、フォームは閉じません。

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

1

の新しいインスタンスを常に作成してForm2いますが、実際には既存のインスタンスを閉じて、新しいフォームを開く場合にのみ新しいインスタンスを作成する必要があります。

' We are keeping our opened form reference here!
Dim openForm As Form2

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        If Application.OpenForms.OfType(Of Form2).Any() Then
              ' No `openForm = new Form2` here - we need to close the existing instance
              ' and not to create new one
              openForm.Close()
        Else
            ' Create new instance only here!
            openForm = New Form2()
            openForm.Show()
        End If

または

    Dim openForms = Application.OpenForms.OfType(Of Form2)()
    ' If there is Form2 instance opened
    If openForms.Any() Then
        ' Get it and close it!
        openForms.First().Close()
    Else
        Dim openForm As New Form2
        openForm.Show()
    End If
于 2013-09-08T17:45:04.207 に答える
0

これを試して

    If Application.OpenForms.OfType(Of Form2).Any() Then
        Application.OpenForms.OfType(Of Form2).ElementAt(0).Close()
    Else
        Form2.Show()
    End If
于 2014-12-25T14:14:13.623 に答える