Verschiebezonen in randlosen Fenstern definieren

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von jmb.96.

    Verschiebezonen in randlosen Fenstern definieren

    Hallo, ich wollte fragen, ob es möglich ist, in Fenstern ohne Rand Zonen zu definieren, an denen man das Fenster verschieben kann.

    Würde mich über Antworten freuen!



    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. Public Const HTCAPTION As Integer = 2
    4. Public Const WM_NCLBUTTONDOWN As Integer = &HA1
    5. <Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand, Flags:=Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> Public Sub DragMove()
    6. ReleaseCapture()
    7. SendMessage(New System.Runtime.InteropServices.HandleRef(Me, MyBase.Handle), WM_NCLBUTTONDOWN, HTCAPTION, 0)
    8. End Sub
    9. Private Declare Auto Function SendMessage Lib "user32" (ByVal hWnd As HandleRef, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
    10. Private Declare Auto Function ReleaseCapture Lib "user32" () As Integer
    11. Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
    12. If e.Button = Windows.Forms.MouseButtons.Left Then
    13. DragMove()
    14. End If
    15. End Sub
    16. End Class

    So.. Hab ich noch aus einem Projekt von mir

    Hab ich glaube ich irgendwo mal in der MSDN für C# gesehen....


    Gruss
    Pascal

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

    Ich machs so:

    VB.NET-Quellcode

    1. Private Sub Panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
    2. If e.Button = Windows.Forms.MouseButtons.Left Then
    3. Panel1.Capture = False
    4. Me.WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
    5. End If
    6. End Sub
    Für den MouseDown-Code von PascalN:

    VB.NET-Quellcode

    1. If e.MouseButton = Left Then
    2. if Bounds.Subtract(new rectangle(3,15,Width - 7, Height - 19)).Contains(e.Location) then
    3. ' move
    4. end if
    5. end if

    somit hast du einen Rahmen und somit kann nur am Rahmen verschoben werden
    Vielen Dank für die vielen Antworten, ich werd's mal gleich ausprobieren!!!

    Mfg, jmb.96



    EDIT: Super, funktioniert!! :D
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „jmb.96“ ()