ย้ายแบบฟอร์มคลิกผ่าน Label vb.net

ฉันมีรูปแบบเรียบง่ายไม่มีเส้นขอบและไม่มีแถบหัวเรื่อง มีเพียงป้ายเดียวที่แสดงนาฬิกาจับเวลา ฉันต้องการให้แบบฟอร์มสามารถเคลื่อนย้ายได้โดยการคลิกเมาส์ที่ใดก็ได้บนแบบฟอร์มแล้วลาก

ฉันแก้ไขปัญหานั้นแล้ว แต่ปัญหาคือเมื่อฉันคลิกแบบฟอร์มตรงจุดที่มีป้ายกำกับ แบบฟอร์มจะไม่ย้าย กล่าวอีกนัยหนึ่ง ฉันต้องการให้ Label เท่านั้นจึงจะมองเห็นได้ โดยไม่มีฟังก์ชันอื่นใด ฉันจะทำให้ป้ายกำกับคลิกผ่านได้อย่างไร


person msosa    schedule 03.08.2013    source แหล่งที่มา


คำตอบ (2)


มีคำตอบอยู่แล้วสำหรับสิ่งนี้ในไซต์นี้ แต่นั่นก็คือ ใน C# ดังนั้นฉันจึงทำซ้ำคำตอบนั้นที่นี่ แต่แปลใน VB.NET หากคุณคิดว่าสิ่งนี้มีประโยชน์อย่าเพิ่มคะแนนโหวตนั้นด้วย ....

สิ่งสำคัญที่ควรทราบที่นี่คือการจัดการการเลื่อนเมาส์สำหรับ Label1 และไม่เพียงแต่สำหรับแบบฟอร์มเท่านั้น

Public Class Form1

    <DllImportAttribute("user32.dll")> _
    Public Shared Function SendMessage(hWnd As IntPtr, Msg As Integer, wParam As Integer, lParam As Integer) As Integer
    End Function

    <DllImportAttribute("user32.dll")> Public Shared Function ReleaseCapture() As Boolean
    End Function

    Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown, Label1.MouseDown
        Const WM_NCLBUTTONDOWN As Integer = &HA1
        Const HT_CAPTION As Integer = &H2

        If e.Button = MouseButtons.Left Then
            ReleaseCapture()
            SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0)
        End If

    End Sub
End Class
person Steve    schedule 03.08.2013
comment
ขอบคุณที่ตอบ. ในขณะเดียวกันฉันก็แก้ไขปัญหาในลักษณะเดียวกัน ฉันเพิ่งเพิ่มตัวจัดการสำหรับ Label1 ในโค้ดของ Suad - person msosa; 03.08.2013

สวัสดี ฉันมีแหล่งตัวอย่างเพื่อทำให้แบบฟอร์มสามารถเคลื่อนย้ายได้

Public Class Form1 
Dim drag As Boolean 
Dim mousex As Integer 
Dim mousey As Integer Private Sub 
Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown drag = True 
mousex = Windows.Forms.Cursor.Position.X - Me.Left 
mousey = Windows.Forms.Cursor.Position.Y - Me.Top 
End Sub Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove 
If drag Then 
Me.Top = Windows.Forms.Cursor.Position.Y - mousey 
Me.Left = Windows.Forms.Cursor.Position.X - mousex 
End If 
End Sub 
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 
Me.MouseUp`enter code here`

ฉันหวังว่านี่จะช่วยคุณได้

ไชโย :)

person Suad Halilovic    schedule 03.08.2013
comment
ขอบคุณสำหรับคำตอบ แต่นี่ไม่ใช่คำตอบ ฉันใช้โค้ดของคุณเพื่อทำให้ฟอร์มสามารถเคลื่อนย้ายได้ และตัวแบบฟอร์มเองก็ไม่ใช่ปัญหา ปัญหาคือมันจะไม่ขยับถ้าฉันคลิกที่ป้ายกำกับ - person msosa; 03.08.2013