VB.NET: Form an Fensterrand andocken

chritsch

Grünschnabel
Hallo Experten

Ich habe mir als Fingerübung eine kleine Klasse geschrieben, die mein Fenster ab einem besitmmten Abstand (_radius) an den Fensterrand andocken lässt:
Code:
Public Sub Andocken(ByVal fenster As Form)

      If _andockenAktiviert = False Then Exit Sub
      If Not fenster.WindowState = FormWindowState.Normal Then Exit Sub

      ' Bildschirm (BS) unten (ohne und mit Taskleiste)
      If fenster.Height + fenster.Top > SystemInformation.PrimaryMonitorSize.Height - _radius Then
         fenster.Top = SystemInformation.PrimaryMonitorSize.Height - fenster.Height
      ElseIf fenster.Height + fenster.Top > SystemInformation.WorkingArea.Height - _radius Then
         fenster.Top = SystemInformation.WorkingArea.Height - fenster.Height
      End If

      ' BS links und rechts
      If fenster.Left < _radius Then
         fenster.Left = 0
      ElseIf fenster.Left + fenster.Width > SystemInformation.PrimaryMonitorSize.Width - _radius Then
         fenster.Left = SystemInformation.PrimaryMonitorSize.Width - fenster.Width
      End If

      ' BS oben (ohne und mit Taskleiste)
      If fenster.Top < _radius Then
         fenster.Top = 0
      ElseIf fenster.Top < SystemInformation.WorkingArea.Top + _radius Then
         fenster.Top = SystemInformation.WorkingArea.Top
      End If

   End Sub

Zu meiner Frage: Wenn ich die Taskleiste permanent eingeblende (ich habe meine Taskleist aus Gewohnheit am oberen Bildschirmrand positioniert), macht die Form am unteren Bildschirmrand, an der Oberseite der (nicht vorhandenen) Taskleiste, einen ersten Andockversuch, bevor sie schliesslich am unteren Rand andockt.

Gibt es eine Funktion um die Position der Taskleiste zu ermitteln oder eine andere Möglichkeit, wie ich diesen "Zwischenstop" umgehen könnte?

Die Zeile "ElseIf fenster.Height + fenster.Top > SystemInformation.WorkingArea.Height - _radius Then" usw. möchte ich eigentlich nicht entfernen, da die meisten User die Taskleiste am unteren Bildschirmrand haben.

Danke für Eure Hilfe.
Hitsch

EDIT: Sorry, habe den falschen Knopf erwischt - Aber jetzt ist mein Post vollständig.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück