Показать немодальную форму, но только одну

VB2010. Должно быть, я что-то упустил, потому что не мог найти решение после часа поиска. То, что я хочу сделать, просто. В моем приложении я хочу отобразить немодальную форму, чтобы она была плавающей, а пользователь все еще мог взаимодействовать с основной формой.

dim f as New frmColors
f.Show(Me)

Но я хочу только один экземпляр формы в любое время. Итак, как я могу предотвратить отображение более одного экземпляра, и если есть один экземпляр, просто выделите его?

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

Сделайте так, чтобы ваша форма следовала шаблону синглтона. Я не могу поручиться за этот образец, но из текста он, кажется, делает то, что вы хотите.

Другие вопросы по тегам