1

VB2010。1時間検索しても解決策が見つからなかったので、何かが足りないに違いありません。私がやりたいのは簡単です。私のアプリでは、モードレスフォームを表示して、ユーザーがメインフォームを操作できる間、フォームがフローティングになるようにします。

dim f as New frmColors
f.Show(Me)

ただし、フォームのインスタンスは常に1つだけ必要です。では、複数のインスタンスが表示されるのを防ぐにはどうすればよいでしょうか。インスタンスが1つある場合は、それにフォーカスを与えるだけですか。

4

2 に答える 2

2

このようなことはあなたのために働きます、フォームがすでに表示されている場合、あなたはすることができませんShow、あなたはただすることができますBringToFront、またあなたはあなたが別のものを新しくすることができるようにフォームが処分されたかどうかを確認することができます。

Public Class Form1
    Dim f As New frmColors

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If f.IsDisposed Then f = New frmColors 'To handle user closing form
        CheckForm(f)
    End Sub

    Private Sub CheckForm(frm As Form)
        If frm.Visible Then
            frm.BringToFront()
        Else
            frm.Show(Me)
        End If
    End Sub    
End Class
于 2012-11-14T02:06:22.573 に答える
0

フォームをシングルトンパターンに従わせます。このサンプルを保証することはできませんが、テキストからは、あなたが望むことをしているように見えます。

于 2012-11-14T18:35:28.203 に答える