親パネル内に移動可能なパネルがあります。私はそれが親パネルから脱落する前に動くのをやめておきたい。これを達成する最良の方法は何ですか?また、パネルを動的に追加します。境界外に出る前にパネルのエッジ検出を停止
更新: 「MyPanel」パネルに入るコードは次のとおりです。 "MyPanel"と "Panel"の違いは、境界線とその移動機能を追加することだけです。 「CoolMove」は私がオンラインで見つけた別の人の回答からのものでした。 MyPanel1をフォームに追加し、別の「MyPanel2」を追加し、「MyPanel1」上にある場合にのみ移動させます。それで、私は "MyPanel2"を "MyPanel1"の範囲内に完全に収めたいと思っています。私はこれを達成するための正しいコードを得るのに苦労しています。
Private allowCoolMove As Boolean = False
Private myCoolPoint As New Point
Public Overridable Sub MyPanel_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
'If panel is ontop of Stock panel, then allow manual moving
If Me.Parent.Name.StartsWith("S") Then
allowCoolMove = True
myCoolPoint = New Point(e.X, e.Y)
Me.Cursor = Cursors.SizeAll
Me.BringToFront()
ElseIf Not Me.Parent.Name.Contains("keyR") Then
DoDragDrop(Me, DragDropEffects.Move)
End If
End Sub
Private Sub MyPanel_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
If allowCoolMove = True Then
Me.Location = New Point(Me.Location.X + e.X - myCoolPoint.X, Me.Location.Y + e.Y - myCoolPoint.Y)
End If
End Sub
Private Sub MyPanel_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp
allowCoolMove = False
Me.Cursor = Cursors.Default
End Sub
この問題を解決するには問題があります。私はMouseMoveイベント(これは私の動くコードです)に入れ、動かなくなります。 – goomba454
@ goomba454:新しいコードで質問を更新してください。 –
Ok私は作業しようとしているコードを更新しました。 – goomba454