Schließen eines Formulars abfangen

Private Sub frmMain_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    Dim strMeldung As String = "Wollen Sie die Anwendung beenden?"
    Dim dr As DialogResult = MessageBox.Show(strMeldung, My.Application.Info.Title, MessageBoxButtons.YesNo)

    If dr = Windows.Forms.DialogResult.Yes Then
        e.Cancel = False
    Else
        e.Cancel = True
    End If
End Sub

Messageboxen anpassen

  • im Beispiel wird eine Messagebox mit individuellem Fragetext: “Objekt löschen?”
  • dem Anwendungsnamen: My.Application.Info.Title
  • entprechenden Buttons: MessageBoxButtons.YesNo
  • und einem Icon: MessageBoxIcon.Question
  • angezeigt und das Ergebnis abgefragt.
If MessageBox.Show("Objekt löschen?", My.Application.Info.Title, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes 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)
    

[.NET] Werkzeuge

kostenlose .Net Entwicklungsumgebungen

Mono

  • OpenSource .NET-kompatible Entwicklungs- und Laufzeitumgebung für plattformunabhängige Software, basierend auf dem Common Language Infrastructure-Standard, von Novell gefördert

Dokumentation

NDoc Code Documentation Generator for .NET

Code-Verschleierung

.NetZ

  • .Net Exe-Packer

Eazfuscator.NET

  • Obfuscator für .Net

Phoenix Protector

  • Obfuscator zum verschleiern von .NET-Assemblies

UbbeCode

  • Obfuscator zum verschleiern von .NET-Assemblies

Diagramme und Graphen

ZedGraph (archive.org)

  • in C# geschriebene Klassenbibliothek für .Net 1.1 und .Net 2.0 mit deren Hilfe man 2D Diagramme darstellen kann

NPlot

  • in C# geschriebene Klassenbibliothek für .Net 1.1 und .Net 2.0 mit deren Hilfe man 2D Diagramme darstellen kann

simple C# library for graph plotting

  • C#-Bibliothek zur Anzeige von Multichannel-Daten

Swordfish Charts (sourceforge)
Swordfish Charts (codeproject)

  • chart control für .NET 3.0/WPF