Form ohne Rand verschieben Verfasst am: 19.04.2008, 13:02
Beschreibung: Mit diesem Code könnt ihr auch Formen ohne Rand verschieben. Wenn solange der User auf das Label drückt, kann die Form verschoben werden. Als Timer-Intervall sind ca 10 ms zu empfehlen.
Code: Visual Basic: [code]Private Sub Label1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles Label1.MouseDown
Timer1.Enabled = True ' Timer wird gestartet Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timer1.Tick
Dim position As System.Drawing.Point 'Ein Punkt mit den aktuellen Mauskoordinaten wird angelegt position.X = Me.MousePosition.X position.Y = Me.MousePosition.Y
Me.Location = position ' Form Location ist Mauslocation
End Sub
Private Sub Label1_MouseUp(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseUp
Timer1.Stop() ' Stoppen Timer1.Enabled = False
End Sub[/code]
Dieser Code wurde von Marduk geschrieben _________________
Marduk Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 374
Verfasst am: 19.04.2008, 16:46
Hmm, das ist noch der alte Code, ich hab mal einen neuen geschrieben, denn bei dem "springt" die obere linke Ecke der Form an die aktuelle Mausposition beim Klicken. Die überarbeitete Version hat das nicht mehr, bin mal eben suchen.
//So, hier mal die verbesserte Version. Es wird 1 Timer benötigt.
Code:
Public difference As Drawing.Point<br /><br /> Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown<br /> difference.Y = MousePosition.Y - Me.Location.Y<br /> difference.X = MousePosition.X - Me.Location.X<br /> 'Differenz zum Formursprung wird berechnet(bleibt konstant)<br /> 'Timer wird gestartet<br /> Time.Interval = 10<br /> Time.Enabled = True<br /> Time.Start()<br /><br /> End Sub<br /><br /> Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Time.Tick<br /> Dim newpoint As Drawing.Point = Nothing<br /> Dim mouse As Drawing.Point = MousePosition 'aktuelle Mausposition<br /> 'von der Mausposition wird mit der Differenz die neue Formlocation berechnet<br /> newpoint.X = mouse.X - difference.X<br /> newpoint.Y = mouse.Y - difference.Y<br /><br /> Me.Location = newpoint<br /> End Sub<br /><br /> Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp<br /> Time.Stop()<br /> Time.Enabled = False<br /><br /> End Sub
Visual Basic: [code]Private Sub Label1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles Label1.MouseDown
Timer1.Enabled = True ' Timer wird gestartet Timer1.Start()
End Sub
[/code] _________________
Bahamut Poster
Anmeldedatum: 17.04.2008 Beiträge: 142
Verfasst am: 24.05.2008, 12:25
(^^kev####;2614)
Wieso benutzt ihr eigentlich nie die VB Tags ?
Der Beitrag wurde 2 Wochen vor dem Forumrelease geschrieben - damals gab es noch gar keine VB-Tags, das war alles noch in der Betaphase. _________________