Hi Leute!
Ich weiss nicht, ob es hier rein passt!
Also ich habe den BorderStyle komplett weggenommen und will jetzt die Form mit gedrückter linker Maustaste beliebig verschieben.
Habe gegooglet, aber finde Codes für vb.net und die zeigen bei VB8 Fehler an.
MfG Burak _________________
tr4st_ « Moderator »
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
Das könntest du relativ leicht mit einem Timer lösen.
Bei einem Klick auf die Form startet der Timer,du speicherst die aktuelle Mausposition. Nach dem ersten Durchgang des Timers fragst du die Mausposition wieder ab und berechnest die Differenz aus beiden Punkten. Je nach dem wie die Differenz aussieht, ist die aktuelle Formposition (Formpos = aktuelle Formposition - Differenz). Wenn du denn Timer entsprechend niedrig einstellst, wirkt das Ganze auch flüssig und ruckelt nicht.
Viktor « Webmaster »
Anmeldedatum: 08.12.2006 Beiträge: 354 Wohnort: Berlin
Das Deklarierst und Definierst du Global Private in der Klasse deiner Form
Code:
Private mouseOffset As Point
Private isMouseDown As Boolean = False
Dann nutzt du die Mouse Events einfach.
Code:
Private Sub frmCustom_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
Dim xOffset As Integer
Dim yOffset As Integer
If e.Button = Windows.Forms.MouseButtons.Left Then
xOffset = -e.X - SystemInformation.FrameBorderSize.Width
yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height
mouseOffset = New Point(xOffset, yOffset)
isMouseDown = True
End If
End Sub
Private Sub frmCustom_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
If e.Button = Windows.Forms.MouseButtons.Left Then
isMouseDown = False
End If
End Sub
Private Sub frmCustom_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If (isMouseDown) Then
Dim mousePos As Point = Control.MousePosition
mousePos.Offset(mouseOffset.X, mouseOffset.Y)
Me.Location = mousePos
End If
Habs jetzt so gemacht, wie beim post von marduk
http://dbhost.info/vbx/viewtopic.php?p=7348
aber wenn ich aufs label klicke, verschiebt sich die maus ganz nach oben links vom form und dann kann man verschieben..
kann man nicht machen, dass man verschieben kann, von dort wo man aufs label klickt?
Code:
Public Class Form1
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
position.X = Control.MousePosition.X ' wird angelegt
position.Y = Control.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
End Class