Modale Fenster

Formular erzeugen und folgendes einstellen (Beispiel)

  • StartPosition: CenterParent
  • MaximizeBox: False
  • MinimizeBox: False
  • FormBorderStyle: FixedDialog
  • Buttons drauf + DialogResult entsprechend dem Button einstellen (Ok, Cancel)

Aufruf der Form

Dim FMyModalForm As New MyModalForm
  
If FMyModalForm.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
    ...
End If

MDI Fenster suchen und anzeigen

  • im Codebeispiel wird anhand eines selber vergebenen Tag-Wertes (z.B. DB-Id-Wert [Primärschlüssel]) einer TreeViewNode ein MDI-Fenster gesucht und angezeigt
Private Sub miGraph_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miGraph.Click
    Dim bNotFound As Boolean = True
    Dim FMonthData As frmMonth ' das gesuchte Formular

    If Not tvObjects.SelectedNode Is Nothing Then
        ' MDI-Child-Liste durchsuchen
        For i As Integer = 0 To frmMain.MdiChildren.Length - 1
            ' wenn die Tags übereinstimmen, dann ist das Fenster schonmal anhand der Tag_ID gefunden
            If frmMain.MdiChildren(i).Tag = tvObjects.SelectedNode.Tag Then
                ' auf den Typ FMonthData casten
                FMonthData = TryCast(frmMain.MdiChildren(i), frmMonth)
                If Not FMonthData Is Nothing Then
                    ' wenn der cast gültig, dann Fenster anzeigen
                    FMonthData.BringToFront()
                    bNotFound = False
                    Exit For
                End If
            End If
        Next

        If bNotFound Then
            ' wenn Fenster nicht in der MDI-Child-Liste vorhanden, dann neues erzeugen
            FMonthData = New frmMonth

            With FMonthData
                .MdiParent = frmMain
                ' Tag-Wert übergeben, für spätere Fenster-Suche
                .Tag = tvObjects.SelectedNode.Tag
                .Text = "Testfenster"
                .Show()
            End With
        End If
    End If
End Sub

MDI Basiswissen

MDI Basiswissen

  1. MDI-Mainform
    • Es muß immer ein MDI Hauptformular (MdiContainer) definiert werden
    • dazu muss die Eigenschaft des entsprechende Formulars gesetzt werden: IsMdiContainer = True
  2. MDI-Childs
    • Projektbaum rechtsklicken->Hinzufügen->Windows Form->Windows Form
    • Form nach eingenem Wunsch designen, benennen und speichern
  3. MDI-Childs anzeigen
  4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' Fenster aus designter Fensterklasse erzeugen
        Dim FObjectTree As New frmObjectTree
        ' MdiParent-Zuweisung ist wichtig,
        ' da so FObjectTree zu einem MDI-Child wird
        ' durch die Zuweisung wird das Child-Formular
        ' automatisch im Hauptformular registriert
        FObjectTree.MdiParent = Me
        ' MDI-Fenster anzeigen
        FObjectTree.Show()
    End Sub
    
  5. Zugriff auf MDI-Childs
    • über MdiChildren-Liste des MDI-Hauptformulars
    For i As Integer = 0 To Me.MdiChildren.Length - 1
    ...   
    Next
    
    oder
    
    For i As Integer = Me.MdiChildren.Length - 1 To 0 Step - 1
        Me.MdiChildren(i).Close()
    Next
    
    • über aktives Fenster
    If Me.ActiveMdiChild IsNot Nothing Then
        ' das MDI-Child-Formular ist vom Typ SubForm
        Dim frm As SubForm = Me.ActiveMdiChild
        frm.textBox1.Text = "......."
    End If
    
  6. MDI Fenster anordnen
  7. Me.LayoutMdi(MdiLayout.Cascade)
    Me.LayoutMdi(MdiLayout.TileHorizontal)
    Me.LayoutMdi(MdiLayout.TileVertical)
    Me.LayoutMdi(MdiLayout.ArrangeIcons)