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
Leave a Reply