Laden...

Form ragt auf zweiten Monitor, trotz (vermeidlich) richtiger Dimensionen

Erstellt von audhen vor 11 Jahren Letzter Beitrag vor 11 Jahren 792 Views
A
audhen Themenstarter:in
3 Beiträge seit 2013
vor 11 Jahren
Form ragt auf zweiten Monitor, trotz (vermeidlich) richtiger Dimensionen

Hallo zusammen,

ich habe aktuell ein kleines Problem mit einem kleinen Tool was ich schreibe.

Die Form des Tools soll sich am rechten Bildschirmrand befinden.
Breite der Form = 100px
Höhe der Form = Bildschirmauflösung - Taskbar.

Das klappt soweit auch gut.
Nur scheint Windows irgendwie noch etwas Breite an die Form anzufügen, denn ich habe immer einen Rest auf dem zweiten Monitor...

Location(X) stimmt mit 100px => 1680-100=1580
Auch die Size passt mit 100px.

Nur wird mir immer ein Teil angezeigt.
Dazu noch ein Screenshot.
Dort wo der "Bruch" des Hintergrundbildes zu erkennen ist, sind auch die 100 Form eigentlich zu Ende und der Anfang des zweiten Monitors. (Taskbar geht durch, da UltraMon im Einsatz).

Vielleicht hat ja jemand eine Idee 😃

FormBorderStyle = None
private void setFormSizeAndLocation()
        {
            //Location
            int taskbarHeight = Screen.PrimaryScreen.Bounds.Bottom - Screen.PrimaryScreen.WorkingArea.Bottom;
            //1680
            int screenWidth = Screen.PrimaryScreen.Bounds.Right;
            int screenHeight = SystemInformation.PrimaryMonitorSize.Height;

            //1580 (1680-100)
            int x = screenWidth - BARWIDTH;
            int y = 0;
            Point location = new Point(x, y);
            this.Location = location;

            //Size
            int height = screenHeight - taskbarHeight;
            this.Size = new Size(BARWIDTH, height);
        }
B
357 Beiträge seit 2010
vor 11 Jahren

Was sagt denn der Debugger dazu? Irgendwo muss die zusätzliche Breite ja herkommen und wenn man das ganze mal Schritt für Schritt durchgeht, springt es einen meistens auch an. Am Code selbst kann ich jetzt nichts falsches sehen, ausser eventuell statt Bounds.Right mit Bounds.Width arbeiten.

795 Beiträge seit 2006
vor 11 Jahren

Ist vllt. MinimumSize der Form gesetzt?

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
A
audhen Themenstarter:in
3 Beiträge seit 2013
vor 11 Jahren

Hey!

Vielen Dank erstmal für Eure Antworten 😃

Laut dem Debugger ist zu jeder Zeit die Position, als auch Größe der Form korrekt.
x = 1580, Breite = 100

MinimumSize steht auf 0;0

Bin echt ratlos 😕

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo audhen,

also wenn ich mir die Size direkt nach dem Setzen anschaue, ist sie 112. Ich denke, das ist eine von Windows bestimmte Mindestbreite des Forms. Und natürlich ragt das Form dann (12 Pixel) über den Hauptschirm hinaus. Ich denke, dass man das auch im Debugger sehen müsste, aber wenn da wirklich nicht, hätte man es leicht in einem Screenshot ermitteln können.

Wenn du BARWIDTH auf einen Wert über der Mindestbreite festlegst, ragt nichts mehr heraus.

Noch besser ist, wenn du die Location erst nach dem Setzen von Size setzt und dabei x auf screenWidth - Width festlegst, also für die Berechnung die tatsächliche und nicht die gewünschte Breite des Form verwendest.

herbivore

A
audhen Themenstarter:in
3 Beiträge seit 2013
vor 11 Jahren

Hallo herbivore,

Du hast mir die Lösung gebracht 😄

Mindestbreite scheint bei mir 132px zu sein.
Dies gilt auch für alle Forms mit FormBorderStyle != None.
Zwar gebe ich gleich direkt im Designer an, dass dem so ist, jedoch wird das wieder überschrieben...

Daher hab ich die Methode nun im FormLoad-Listener untergebracht - siehe da, es funktioniert mit den 100px.

Deinen Vorschlag beherzige ich nun auch 😃 Erst Size, dann Location.

Vielen vielen Dank an alle und schöne Ostertage!