2013-08-03 4 views
0

테두리가없고 제목 표시 줄이없는 간단한 양식이 있습니다. 스톱워치를 보여주는 단 하나의 레이블 만 있습니다. 양식을 마우스로 클릭하여 움직일 수있는 양식이 필요합니다.양식을 이동하고 라벨을 클릭하십시오. vb.net

해결되었지만 문제는 라벨로 점재 된 양식을 클릭 할 때 양식이 움직이지 않는다는 것입니다. 다른 말로 표현하자면, Label은 다른 기능을 사용하지 않고 표시되어야합니다. 라벨을 어떻게 클릭하면됩니까?

답변

1

이이 사이트에서 이에 대한 already an answer이지만, 그했다 C#에서, 그래서 나는 그 대답을 반복하지만 VB.NET에서 번역. 당신은이

여기서 중요한 점은 형태

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 
의 Label1을위한 또한 mousedown의 취급하고 있지 .... 또한에 대답 upvote에를 esitate하지 않는 유용하다는 것을 생각한다면
+0

답장을 보내 주셔서 감사합니다. 한편 나는 비슷한 방식으로 문제를 해결했다. 방금 Suad의 코드에 Label1 용 핸들러를 추가했습니다. – msosa

0

안녕하세요 만드는 몇 가지 예제 소스이 양식을 이동 나는이 당신에게

을 도울 수 있기를 바랍니다

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` 

건배 :)

+0

답장을 보내 주셔서 감사합니다. 그러나 답변이 아닙니다. 폼을 움직이고 움직이게하기 위해 이미 코드를 사용했습니다. 문제는 아닙니다. 문제는 라벨을 클릭하면 움직이지 않는다는 것입니다. – msosa

0
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 MyBase.MouseDown, Label1.MouseDown 
    drag = True 
    mousex = Windows.Forms.Cursor.Position.X - Me.Left 
    mousey = Windows.Forms.Cursor.Position.Y - Me.Top 
End Sub 

Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp, Label1.MouseUp 
    drag = False 
End Sub 

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove, Label1.MouseMove 
    If drag Then 
     Me.Top = Windows.Forms.Cursor.Position.Y - mousey 
     Me.Left = Windows.Forms.Cursor.Position.X - mousex 
    End If 
End Sub 
End Class 
관련 문제