Ich habe den Code von @Gonger96 noch dahin gehend angepasst, dass auch mit dem Mausrad ein festgelegter Wert verringert / erhöht werden kann.
SO passt das für mich jetzt richtig gut, danke an alle
SO passt das für mich jetzt richtig gut, danke an alle
VB.NET-Quellcode
- Imports System.ComponentModel
- Public Class CustomUpDown
- Inherits NumericUpDown
- <Category("Data")>
- Public Property RightclickIncrement As Decimal = 10
- <Category("Data")>
- Public Property MouseWheelIncrement As Decimal = 5
- Private spinner As Control = Nothing
- Protected Overrides Sub OnHandleCreated(ByVal e As EventArgs)
- MyBase.OnHandleCreated(e)
- spinner = Controls(0)
- AddHandler spinner.MouseClick, AddressOf Spin_MouseClick
- End Sub
- Protected Overrides Sub OnMouseWheel(e As MouseEventArgs)
- If e.Delta > 0 Then
- MyBase.Value = Math.Min(MyBase.Maximum, MyBase.Value + MouseWheelIncrement)
- Else
- MyBase.Value = Math.Max(MyBase.Minimum, MyBase.Value - MouseWheelIncrement)
- End If
- End Sub
- Private Sub Spin_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs)
- If e.Button <> MouseButtons.Right Then Return
- Dim half_height As Integer = spinner.Height \ 2
- If e.Y < half_height Then
- Value = Math.Min(Maximum, Value + RightclickIncrement)
- Else
- Value = Math.Max(Minimum, Value - RightclickIncrement)
- End If
- End Sub
- End Class