Hallo Profis
Ich möchte den LINKEN Rand eines randlosen Fensters mit der linken Maustaste verschieben mit folgendem Code
Das funktioniert auch, nur - der RECHTE Rand der Form flackert ganz gewaltig, bis zu einem Zentimeter, wenn ich die Maus schnell nach links bewege. Was macht da Windows? Ich zeichne den RECHTEN Rand ja immer am gleichen Ort (ein verschobener linke Rand wird durch die geänderte Fensterbreite kompensiert). Wenn ich die Maus nach RECHTS bewege, bleibt hingegen der rechte Rand wie gewünscht stabil an Ort. Wieso dieser Unterschied? Noch wichtiger aber: Wie kann ich das Geflacker beim Vergrössern des Fensters verhindern?
Ich hab hier im Forum verschiedene Lösungen angetroffen: Form skalierbar machen (FormBorderStyle=None) & Form umherziehbar machen oder etwa Größenänderung bei Forms mit dem Borderstyle None. Alle leiden an der selben Krankheit wie mein obiger Code. Das sieht sehr unprofessionell aus. Ich hab auch mit
etc. experimentiert, erfolglos. Hat jemand noch weitere Ideen? (Zum Austesten einfach eine Form1 mit FormBorderStyle=None erzeugen und obiger Code kopieren.)
Danke fürs Mitdenken.
Bernhard
Ich möchte den LINKEN Rand eines randlosen Fensters mit der linken Maustaste verschieben mit folgendem Code
VB.NET-Quellcode
- Public Class Form1
- Dim ButtonLeft As Boolean
- Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
- If e.Button = Windows.Forms.MouseButtons.Left Then ButtonLeft = True
- End Sub
- Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
- If ButtonLeft Then
- Me.SetBounds(Me.Location.X + e.X, Me.Location.Y, Me.Width - e.X, Me.Height)
- End If
- End Sub
- Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp
- ButtonLeft = False
- End Sub
- End Class
Das funktioniert auch, nur - der RECHTE Rand der Form flackert ganz gewaltig, bis zu einem Zentimeter, wenn ich die Maus schnell nach links bewege. Was macht da Windows? Ich zeichne den RECHTEN Rand ja immer am gleichen Ort (ein verschobener linke Rand wird durch die geänderte Fensterbreite kompensiert). Wenn ich die Maus nach RECHTS bewege, bleibt hingegen der rechte Rand wie gewünscht stabil an Ort. Wieso dieser Unterschied? Noch wichtiger aber: Wie kann ich das Geflacker beim Vergrössern des Fensters verhindern?
Ich hab hier im Forum verschiedene Lösungen angetroffen: Form skalierbar machen (FormBorderStyle=None) & Form umherziehbar machen oder etwa Größenänderung bei Forms mit dem Borderstyle None. Alle leiden an der selben Krankheit wie mein obiger Code. Das sieht sehr unprofessionell aus. Ich hab auch mit
etc. experimentiert, erfolglos. Hat jemand noch weitere Ideen? (Zum Austesten einfach eine Form1 mit FormBorderStyle=None erzeugen und obiger Code kopieren.)
Danke fürs Mitdenken.
Bernhard