MS SnapPanel ScrollBar
This commit is contained in:
@@ -5,7 +5,9 @@ Public Class ClassSnapPanel
|
||||
|
||||
Private _ShowGrid As Boolean = True
|
||||
Private _GridSize As Integer = 16
|
||||
|
||||
Public Sub New()
|
||||
Me.AutoScroll = True ' Scrollbars aktivieren
|
||||
End Sub
|
||||
Public Property GridSize As Integer
|
||||
Get
|
||||
Return _GridSize
|
||||
@@ -30,12 +32,14 @@ Public Class ClassSnapPanel
|
||||
AddHandler e.Control.LocationChanged, AddressOf AlignToGrid
|
||||
AddHandler e.Control.DragDrop, AddressOf AlignToGrid
|
||||
MyBase.OnControlAdded(e)
|
||||
UpdateScrollArea()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnControlRemoved(e As ControlEventArgs)
|
||||
RemoveHandler e.Control.LocationChanged, AddressOf AlignToGrid
|
||||
RemoveHandler e.Control.DragDrop, AddressOf AlignToGrid
|
||||
MyBase.OnControlRemoved(e)
|
||||
UpdateScrollArea()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
|
||||
@@ -51,6 +55,23 @@ Public Class ClassSnapPanel
|
||||
Dim x As Integer = Math.Round(item.Left / _GridSize) * _GridSize
|
||||
Dim y As Integer = Math.Round(item.Top / _GridSize) * _GridSize
|
||||
item.Location = New Point(x, y)
|
||||
UpdateScrollArea()
|
||||
End If
|
||||
End Sub
|
||||
Private Sub UpdateScrollArea()
|
||||
Dim maxWidth As Integer = 0
|
||||
Dim maxHeight As Integer = 0
|
||||
|
||||
' Größte X- und Y-Koordinate der enthaltenen Controls bestimmen
|
||||
For Each ctrl As Control In Controls
|
||||
Dim right As Integer = ctrl.Right
|
||||
Dim bottom As Integer = ctrl.Bottom
|
||||
|
||||
If right > maxWidth Then maxWidth = right
|
||||
If bottom > maxHeight Then maxHeight = bottom
|
||||
Next
|
||||
|
||||
' Scrollbereich setzen
|
||||
Me.AutoScrollMinSize = New Size(maxWidth, maxHeight)
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Reference in New Issue
Block a user