Hey Moin Moin
Also ich sehe glaube ich den Wald vor Lauter Bäumen nicht mehr, ich habe das Prinzip einer Scrollbar/Vertical/Horizontal verstanden aber irgendwie Kriege ich es nicht so umgesetzt wie ich das möchte..
hier mal mein Source... Wäre Super wenn ihr mir weiterhelft...
Mein Größte Kopfick gerade für mich das die Maus nicht über Thumb und mit der Mouse Bewegung gleich schnell auf und abgeht... Schauts euch eventuell mal an..
Spoiler anzeigen
*und bevor es jemand schreibt oder Fragt!
*Ja ich habe mir Examples & Google durchforstet... Verstehe auch wie es geht aber gerade kriege ich Zahlen Collaer!
*die ScrollBar ist für ein Eigenes ListControl das ich Für einen Eigenen IPTV Player schreibe
* ScrollBars = 65% ; ListControl = 50% ; IPTV Player Programm = 80% Fertigungsstatus.
*Wenn ihr die anderen Sources braucht um reinzusteigen reiche ich sie nach..
*Danke im Vorraus für Hilfe
ps. ich hoffe ihr versteht meinen TodoList Spikzettel falls da fragen zu sind haut sie raus!
Also ich sehe glaube ich den Wald vor Lauter Bäumen nicht mehr, ich habe das Prinzip einer Scrollbar/Vertical/Horizontal verstanden aber irgendwie Kriege ich es nicht so umgesetzt wie ich das möchte..
hier mal mein Source... Wäre Super wenn ihr mir weiterhelft...
Mein Größte Kopfick gerade für mich das die Maus nicht über Thumb und mit der Mouse Bewegung gleich schnell auf und abgeht... Schauts euch eventuell mal an..
VB.NET-Quellcode
- Imports System.Drawing.Drawing2D
- Public Class ScrollBar
- Inherits Control
- ''
- ''Todolist >
- ''Maximum = Vertical Track.Height
- ''Maximum = Horizontal Track.Width
- ''Minimum = Begin = Track.x/Track.y
- ''Value = ThumpPosition
- ''Scroll Hoch und Runter bei PageUp/PAGEDown & UP/Down Tast mit Smallchange!?
- ''Event Für Scrollen & Für Value Change hinzufügen
- ''
- #Region "Declares"
- Private ThumCordinate As Integer = 0
- Private TRACKrectangle As Rectangle
- Private THUMBrectangle As Rectangle
- Private ReadOnly THUMsize As Integer = 50
- Private ReadOnly GRAPHICPART As New GraphicsPath
- #End Region
- Sub New()
- SetStyle(ControlStyles.SupportsTransparentBackColor, True)
- SetStyle(ControlStyles.UserPaint, True)
- SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
- SetStyle(ControlStyles.ResizeRedraw, True)
- DoubleBuffered = True
- UpdateStyles()
- End Sub
- Protected Overrides Sub OnPaint(e As PaintEventArgs)
- MyBase.OnPaint(e)
- GRAPHICPART.Reset()
- GRAPHICPART.AddRectangle(TRACKrectangle)
- With e.Graphics
- Select Case MState
- Case MouseState.Down
- If _Orientation = Orientation.Horizontal Then
- Size = New Size(Width, 12)
- TRACKrectangle = New Rectangle(0, 0, Width, Height)
- THUMBrectangle = New Rectangle(ThumCordinate, 2, THUMsize, Height - 4) ' Begin<, ^Oben, Länge>, Tiefe⮟
- .FillRectangle(New SolidBrush(Color.FromArgb(61, 61, 61, 1)), TRACKrectangle)
- .FillRectangle(New SolidBrush(Color.FromArgb(10, 0, 0)), THUMBrectangle)
- ElseIf _Orientation = Orientation.Vertical Then
- Size = New Size(12, Height)
- TRACKrectangle = New Rectangle(0, 0, Width, Height)
- THUMBrectangle = New Rectangle(2, ThumCordinate, Width - 4, THUMsize) ' Begin>, Tiefe⮟, Breite<, Lönge⮟
- .FillRectangle(New SolidBrush(Color.FromArgb(61, 61, 61, 1)), TRACKrectangle)
- .FillRectangle(New SolidBrush(Color.FromArgb(10, 0, 0)), THUMBrectangle)
- End If
- Case MouseState.Over
- If _Orientation = Orientation.Horizontal Then
- Size = New Size(Width, 12)
- TRACKrectangle = New Rectangle(0, 0, Width, Height)
- THUMBrectangle = New Rectangle(ThumCordinate, 2, THUMsize, Height - 4) ' Begin<, ^Oben, Länge>, Tiefe⮟
- .FillRectangle(New SolidBrush(Color.FromArgb(61, 61, 61, 1)), TRACKrectangle)
- .FillRectangle(New SolidBrush(Color.FromArgb(10, 0, 0)), THUMBrectangle)
- ElseIf _Orientation = Orientation.Vertical Then
- Size = New Size(12, Height)
- TRACKrectangle = New Rectangle(0, 0, Width, Height)
- THUMBrectangle = New Rectangle(2, ThumCordinate, Width - 4, THUMsize) ' Begin>, Tiefe⮟, Breite<, Lönge⮟
- .FillRectangle(New SolidBrush(Color.FromArgb(61, 61, 61, 1)), TRACKrectangle)
- .FillRectangle(New SolidBrush(Color.FromArgb(10, 0, 0)), THUMBrectangle)
- End If
- Case MouseState.None
- If _Orientation = Orientation.Horizontal Then
- Size = New Size(Width, 6)
- TRACKrectangle = New Rectangle(0, 0, Width, Height)
- THUMBrectangle = New Rectangle(ThumCordinate, 2, THUMsize, Height - 4) ' Begin<, ^Oben, Länge>, Tiefe⮟
- .FillRectangle(New SolidBrush(Color.FromArgb(61, 61, 61, 1)), TRACKrectangle)
- .FillRectangle(New SolidBrush(Color.FromArgb(10, 0, 0)), THUMBrectangle)
- ElseIf _Orientation = Orientation.Vertical Then
- Size = New Size(6, Height)
- TRACKrectangle = New Rectangle(0, 0, Width, Height)
- THUMBrectangle = New Rectangle(2, ThumCordinate, Width - 4, THUMsize) ' Begin>, Tiefe⮟, Breite<, Lönge⮟
- .FillRectangle(New SolidBrush(Color.FromArgb(61, 61, 61, 1)), TRACKrectangle)
- .FillRectangle(New SolidBrush(Color.FromArgb(10, 0, 0)), THUMBrectangle)
- End If
- End Select
- End With
- End Sub
- Protected Overrides Sub OnCreateControl()
- MyBase.OnCreateControl()
- If _Orientation = Orientation.Horizontal Then
- Dock = 0
- Size = New Size(350, 6)
- Dock = 2
- ElseIf _Orientation = Orientation.Vertical Then
- Dock = 0
- Size = New Size(6, 350)
- Dock = 4
- End If
- End Sub
- #Region "Propertys"
- Enum Orientation
- Horizontal = 0
- Vertical = 1
- End Enum
- Private _Orientation As Orientation = Orientation.Horizontal
- Public Property Orientatian As Orientation
- Get
- Return _Orientation
- End Get
- Set(value As Orientation)
- _Orientation = value
- If _Orientation = Orientation.Horizontal Then
- Dock = 0
- Size = New Size(350, 6)
- Dock = 2
- ElseIf _Orientation = Orientation.Vertical Then
- Dock = 0
- Size = New Size(6, 350)
- Dock = 4
- End If
- Invalidate()
- End Set
- End Property
- Private _Minimum As Integer = 0
- Public Property Minimum As Integer
- Get
- Return _Minimum
- End Get
- Set(value As Integer)
- _Minimum = value
- End Set
- End Property
- Private _Maximum As Integer = 100
- Public Property Maximum As Integer
- Get
- Return _Maximum
- End Get
- Set(value As Integer)
- _Maximum = value
- End Set
- End Property
- Private _Value As Integer
- Public Property Value As Integer
- Get
- Return _Value
- End Get
- Set(value As Integer)
- _Value = value
- End Set
- End Property
- Private _SmallChange As Integer = 1
- Public Property SmallChange As Integer
- Get
- Return _SmallChange
- End Get
- Set(value As Integer)
- _SmallChange = value
- End Set
- End Property
- Private _LargeChange As Integer = 10
- Public Property LargeChange As Integer
- Get
- Return _LargeChange
- End Get
- Set(value As Integer)
- _LargeChange = value
- End Set
- End Property
- #End Region
- #Region "Mouse Events"
- Private MState As MouseState = MouseState.None
- Private Enum MouseState
- Over
- Down
- None
- End Enum
- Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
- MyBase.OnMouseDown(e)
- If GRAPHICPART.IsVisible(e.Location) Then
- 'Über Thumb Click ^ Hochbewegen mit LargeChange
- MState = MouseState.Down : Invalidate()
- 'Unter Thumb Click Runter Hochbewegen mit LargeChange
- End If
- End Sub
- Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
- MyBase.OnMouseMove(e)
- If e.Button = MouseButtons.Left Then
- If _Orientation = Orientation.Horizontal Then
- '_Value = ThumbCordinate
- ThumCordinate = Percentage(e.X, TRACKrectangle.Width) + (THUMsize * 2) 'X
- ElseIf _Orientation = Orientation.Vertical Then
- '_Value = ThumbCordinate
- ThumCordinate = Percentage(e.Y, TRACKrectangle.Height) + (THUMsize * 2) 'Y
- End If
- End If
- If GRAPHICPART.IsVisible(e.Location) Then
- MState = MouseState.Over : Invalidate()
- End If
- End Sub
- Protected Overrides Sub OnMouseLeave(e As EventArgs)
- MyBase.OnMouseLeave(e)
- MState = MouseState.None : Invalidate()
- End Sub
- #End Region
- #Region "Helps"
- Private Function Percentage(Value As Integer, Maximum As Integer)
- Return CInt(Value / Maximum * 100)
- End Function
- #End Region
- End Class
*und bevor es jemand schreibt oder Fragt!
*Ja ich habe mir Examples & Google durchforstet... Verstehe auch wie es geht aber gerade kriege ich Zahlen Collaer!
*die ScrollBar ist für ein Eigenes ListControl das ich Für einen Eigenen IPTV Player schreibe
* ScrollBars = 65% ; ListControl = 50% ; IPTV Player Programm = 80% Fertigungsstatus.
*Wenn ihr die anderen Sources braucht um reinzusteigen reiche ich sie nach..
*Danke im Vorraus für Hilfe
ps. ich hoffe ihr versteht meinen TodoList Spikzettel falls da fragen zu sind haut sie raus!