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:
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.
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: