jedna instance childu v MDI   zodpovězená otázka

VB.NET

Zdravím, potřebuji vědět jakým způsobem si můžu ošetřit, aby se mi v MDI okně načetla pouze jedna instance Childu, mám to tak že si po stisku tlačítka otevřu form jako Child... Ale když na to tlačítko klepnu znova tak se vytvoří znovu. Já chci aby po dobu kdy tento Child běží nešel tento konkrétní znovu vytvořit. Spouštění jiného ale musí fungovat. Diky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak například použijeme extension metodu v kombinaci s elegantním lambda výrazem:

Public Class Form1
  Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    If Me.MdiChildren.FirstOrDefault(Function(mdiChild) TypeOf (mdiChild) Is Form2) Is Nothing Then
      Dim mdiChild As New Form2
      mdiChild.MdiParent = Me
      mdiChild.Show()
    Else
      MsgBox("Instance Form2 již existuje.")
    End If
  End Sub
End Class

Form1 je MdiParent, Form2 je MdiChild.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Je to dokonalé! Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A ještě otázka. Jak ho dostat do popředí místo toho MsgBoxu? Zkoušel jsem tohle ale on nezná mdiChild... Zkoušel jsem taky dát ten DIM nad proceduru, to pak funguje ale jen do doby než zavřu Child. Pak píše něco o tom, že nelze přistoupit k uvolněnému objektu

Public Class Form1
  Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    If Me.MdiChildren.FirstOrDefault(Function(mdiChild) TypeOf (mdiChild) Is Form2) Is Nothing Then
      Dim mdiChild As New Form2
      mdiChild.MdiParent = Me
      mdiChild.Show()
    Else
      mdiChild.BrignToFront()
    End If
  End Sub
End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Public Class Form1
  Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim mdiChild As Form = Me.MdiChildren.FirstOrDefault(Function(form) TypeOf (form) Is Form2)
    If mdiChild Is Nothing Then
      mdiChild = New Form2
      mdiChild.MdiParent = Me
      mdiChild.Show()
    Else
      mdiChild.BringToFront()
    End If
  End Sub
End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback