2015-09-02 90 views
0

我一直在嘗試移動沒有標題欄的表單。我在標題欄應該使用的面板。這是我最接近的做法。一旦你看我的代碼,你可能會笑:)移動沒有標題欄的表單

現在你不能移動它的畫布,但你可以移動它與mousemove事件。當我將它與表單一起移動時,它會向下並向右移動。有人可以告訴我我哪裏出錯了。我猜這是因爲對於MouseMove子中的a和b變量沒有任何價值。

Private Sub forml_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel.MouseDown 
    Dim newPoint As New System.Drawing.Point() 
    Dim a As Integer 
    Dim b As Integer 

    a = Panel.MousePosition.X - Me.Location.X 
    b = Panel.MousePosition.Y - Me.Location.Y 
End Sub 

Private Sub form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove 
    Dim newPoint As New System.Drawing.Point() 

    Dim a As Integer 
    Dim b As Integer 

    If e.Button = MouseButtons.Left Then 
     newPoint = Panel.MousePosition 
     newPoint.X = newPoint.X - (a) 
     newPoint.Y = newPoint.Y - (b) 
     Me.Location = newPoint 
    End If 
End Sub 

我真的很感謝一些幫助。

+0

的*碼*選項是很容易的。粘貼到代碼中,選中它,然後在鍵盤或工具欄按鈕上按Ctrl + K並使用{}圖像。 –

+0

請參閱[如何移動窗體而不使用窗體邊框(visual studio)](http://stackoverflow.com/a/24449733/719186) – LarsTech

+0

這只是一個錯誤。你的a和b變量必須是表單類的成員,而不是局部變量。您的MouseMove事件處理程序偵聽表單,而不是面板。 –

回答

0

我得到它的工作!你知道了漢斯..我做了班級的b和成員,並且我通過下面的代碼處理了面板。感謝你們所有的幫助。

:這個作品

Private Sub planel_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel.MouseDown 

     Dim newPoint As New System.Drawing.Point() 

     a = Panel.MousePosition.X - Me.Location.X 
     b = Panel.MousePosition.Y - Me.Location.Y 

    End Sub 
    Private Sub panel_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel.MouseMove 

     Dim newPoint As New System.Drawing.Point() 

     If e.Button = MouseButtons.Left Then 

      newPoint = Panel.MousePosition 
      newPoint.X = newPoint.X - (a) 
      newPoint.Y = newPoint.Y - (b) 
      Me.Location = newPoint 
     End If 
    End Sub