Form per Control bewegen (+ Docking)

    • VB.NET

    Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Louis.Cyfer.

      Form per Control bewegen (+ Docking)

      Hi

      Hier ist noch mal der Code für das bewegen einer Form per Controls.

      VB.NET-Quellcode

      1. Dim ptMouseDownPos As Point
      2. 'Entfernen, wenn kein eingeschränkter Bereich existieren soll
      3. Dim rectLimitation As Rectangle = Screen.PrimaryScreen.WorkingArea
      4. Dim DockLeft As Integer = 0
      5. Dim DockRight As Integer = 0
      6. Dim DockTop As Integer = 0
      7. Dim DockBottom As Integer = 0
      8. 'bis hier
      9. Private Sub Control_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Control.MouseDown
      10. If e.Button = Windows.Forms.MouseButtons.Left Then
      11. ptMouseDownPos = e.Location
      12. End If
      13. End Sub
      14. Private Sub Control_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Control.MouseMove
      15. If e.Button = Windows.Forms.MouseButtons.Left Then
      16. Dim ptNewPos As Point = e.Location - ptMouseDownPos + Me.Location
      17. 'Entfernen, wenn kein eingeschränkter Bereich existieren soll
      18. If ptNewPos.X < rectLimitation.Left + DockLeft Then ptNewPos.X = rectLimitation.Left
      19. If ptNewPos.Y < rectLimitation.Top + DockTop Then ptNewPos.Y = rectLimitation.Top
      20. If ptNewPos.X > rectLimitation.Width - Me.Width - DockRight Then ptNewPos.X = rectLimitation.Width - Me.Width
      21. If ptNewPos.Y > rectLimitation.Height - Me.Height - DockBottom Then ptNewPos.Y = rectLimitation.Height - Me.Height
      22. 'bis hier
      23. Me.Location = ptNewPos
      24. End If
      25. End Sub


      Das ganze geht auch mit Docking. Dazu einfach die Dock auf den gewünschten Wert setzen (Vorschlag: 7)

      Gruß
      ~blaze~

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „~blaze~“ ()

      sieht gut aus!

      nur hab ich eine Frage: wie benutze ich "Control.MouseDown" in VB 2008?

      ansonsten eine gute idee^^
      MfG Cyfer
      ---
      Dim Louis.Cyfer As Coder.Object
      Do While Louis.Cyfer.ReadyState <> Louis.Cyfer.ReadyState.Complete
      Application.DoEvents()
      Loop
      ' Der Beste Code ist immer noch der eigene
      ---
      Kürzer:

      VB.NET-Quellcode

      1. Private Declare Function ReleaseCapture _
      2. Lib "user32" () As Integer
      3. Private Declare Function SendMessage _
      4. Lib "user32" Alias "SendMessageA" ( _
      5. ByVal hwnd As Integer, _
      6. ByVal wMsg As Integer, _
      7. ByVal wParam As Integer, _
      8. ByRef lParam As Object) As Integer
      9. Private Const HTCAPTION As Short = 2
      10. Private Const WM_NCLBUTTONDOWN As Short = &HA1S
      11. Private Sub Control_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Control.MouseDown
      12. Call ReleaseCapture()
      13. SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN, HTCAPTION, 0)
      14. End Sub


      Ist von freecoder <- thanks ;)

      MrLee schrieb:

      Es steht für ein X-Beliebiges COntrol, wie z.B. ein Button, Panel usw..

      versteh mich jetz net falsch,
      also kann ich auch, falls ich nen button1 hab, z.Bsp: "button1_MouseDown" & "button1.MouseDown" schreiben ?
      MfG Cyfer
      ---
      Dim Louis.Cyfer As Coder.Object
      Do While Louis.Cyfer.ReadyState <> Louis.Cyfer.ReadyState.Complete
      Application.DoEvents()
      Loop
      ' Der Beste Code ist immer noch der eigene
      ---