Positionieren einer Form zur Laufzeit mithilfe von Anwendungseinstellungen unter VB.Net (Teil 2)

Hier finden Sie den VB.Net Programmcode mit dem Sie unter mithilfe der Anwendungseinstellungen und My.Settings eine Form korrekt positionieren können.

Zusatzlich zu den “normalen” Kommentaren habe ich den Code mit sogenannten ‘XML Documentation Tags’ versehen. Diese Tags kann IntelliSense interpretieren und der Inhalt wird angezeigt, sobald man sich im Code mit der Maus über die entsprechende Klasse oder Methode bewegt bzw. wenn man die Klasse/Methode eintippt. Das hört sich jetzt nicht sehr spektakulär an, ist aber, wenn man nach einem halben Jahr wieder mit der Klasse arbeiten muss/will, extrem Hilfreich.

Nähere Erläuterungen finden Sie im ersten Teil

Für den Code kann ich natürlich keine Gewähr übernehmen und die Benutzung erfolgt auf eigene Gefahr.

''' <summary>
''' Dieses Klasse enthält zwei Shared Prozeduren zum Positionieren eines Formulars und zum Speicher der Position (mit Länge und Breite)<para></para>
''' <paramref name="subSetPosition(F As Form)"/><para></para>
''' <paramref name="subSavePosition(F As Form)"/>
''' </summary>
Public Class cKonfig

    ''' <summary>
    ''' Positioniert ein Formular mit den gespeicherten Koordinaten und Abmessungen<para></para>
    ''' <param name="F">F -> Formular, welches positioniert werden soll</param>
    ''' </summary>
    Public Shared Sub subSetPosition(F As Form)

        Dim x As Integer = My.Settings.Left
        Dim y As Integer = My.Settings.Top

        F.Width = My.Settings.Width
        F.Height = My.Settings.Height

        F.StartPosition = FormStartPosition.Manual
        If funIsVisible(x, y) Then
            '... und Position setzen
            F.Location = New Point(x, y)
        Else
            '... oder auf dem primären Monitor links oben platzieren
            F.Location = New Point(0, 0)
        End If

    End Sub

    ''' <summary>
    ''' Speichert die Koordinaten und Abmessungen von einem Formular<para></para>
    ''' <param name="F">F -> Formular, desen Koordinaten und Abmessungen gespeichert werden sollen</param>
    ''' </summary>
    Public Shared Sub subSavePosition(F As Form)

        Dim x As Integer = F.Location.X
        Dim y As Integer = F.Location.Y

        Dim width As Integer = F.Width
        Dim height As Integer = F.Height

        My.Settings.Width = width
        My.Settings.Height = height

        My.Settings.Left = x
        My.Settings.Top = y

        My.Settings.Save()

    End Sub

    ''' <remarks>
    ''' <param name='X'>X -> Parameter "Left" der oberen linken Ecke</param><para></para>
    ''' <param name='Y'>Y -> Parameter "Top" der oberen linken Ecke</param>
    ''' </remarks>
    ''' <returns>True -> der angegebene Punkt ist sichtbar<para>False -> der angegebene Punkt ist   nicht  sichtbar</para></returns>
    Private Shared Function funIsVisible(X As Integer, Y As Integer) As Boolean

        'durchläuft alle angeschlossenen Bildschirme
        For Each sc As Screen In Screen.AllScreens
            If sc.WorkingArea.Contains(New Point(X, Y)) Then Return True
        Next

        Return False

    End Function

End Class

Keine Kommentare (0)

Leave a Reply

Your email address will not be published. Required fields are marked *