Trackbar Schritte beim Mausewheel

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von egon.

    Trackbar Schritte beim Mausewheel

    Hallo,
    wie kann man bei einem TrackBar die Schrittweite einstellen, wenn mit dem Mausrad der Wet verstellt wird?
    Bei mir ergeben sich immer 3er Schritte. Bislang kann ich die Schrittweite nur über das Betriebssystem Win7 beeinflussen.
    Das ist bei Programmen aber unbefriedigend. Gibt es die Möglichkeit die Schrittweite im Programm aus 1 zu stellen?
    Das könnte man vielleicht machen, zumal man mit
    Debug.WriteLine("SystemInformation.MouseWheelScrollLines " + SystemInformation.MouseWheelScrollLines.ToString)
    abfragen kann, wieviele Zeilen pro Maisrad-Klick gesprungen wird.

    In einem anderen Forum habe ich eine mögliche Lösug in C# gefunden, die ich aber nicht lauffähig in vb.net übersetzen kann:
    social.msdn.microsoft.com/Foru…-each-tick?forum=winforms

    C#-Quellcode

    1. void trackBar_MouseWheel(object sender, MouseEventArgs e)
    2. {
    3. ((HandledMouseEventArgs)e).Handled = true;//disable default mouse wheel
    4. if (e.Delta > 0)
    5. {
    6. if (trackBar1.Value < trackBar1.Maximum)
    7. {
    8. trackBar1.Value++;
    9. }
    10. }
    11. else
    12. {
    13. if (trackBar1.Value > trackBar1.Minimum)
    14. {
    15. trackBar1.Value--;
    16. }
    17. }
    18. }


    und in der Load Sub einfügen

    C#-Quellcode

    1. trackBar1.MouseWheel += new MouseEventHandler(trackBar1_MouseWheel);


    In dem C# Beispielcode habe ich nicht verstanden, wie die originale Routine ausgetauscht wird.

    Hier finden sich auch noch Hinweise:
    pcreview.co.uk/threads/re-trac…ouse-wheel-event.1367406/
    Als Custom Control gehts. [edit:] Leider doch nicht. :D

    VB.NET-Quellcode

    1. ' gelöscht

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pasta“ ()

    So, nun habe ich den Vorschalg von ErfinderDesRades umgesetzt. Es sieht so aus, als ob das Problem nun gelöst ist :)

    Die Variable "TrackBar1_Value_var" steht für den Wert des Schiebers.
    Minimum = 0 und Maximim = 400
    Mit "SystemInformation.MouseWheelScrollLines" wird abgefragt, wie viele Schritte bei einem Maurad-Klick gemacht werden. Entsprechend wird die Trackbar initialisiert.

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System
    3. Imports System.Drawing
    4. Imports System.Windows.Forms
    5. Public Class Form1
    6. Dim TrackBar1_Value_var As Integer
    7. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. TrackBar1.Maximum = 400 * SystemInformation.MouseWheelScrollLines
    9. TrackBar1.Minimum = 0
    10. ' The TickFrequency property establishes how many positions
    11. ' are between each tick-mark.
    12. TrackBar1.TickFrequency = 40 * SystemInformation.MouseWheelScrollLines
    13. ' The LargeChange property sets how many positions to move
    14. ' if the bar is clicked on either side of the slider.
    15. TrackBar1.LargeChange = SystemInformation.MouseWheelScrollLines
    16. ' The SmallChange property sets how many positions to move
    17. ' if the keyboard arrows are used to move the slider.
    18. TrackBar1.SmallChange = SystemInformation.MouseWheelScrollLines
    19. TrackBar1.Value = 200 * SystemInformation.MouseWheelScrollLines
    20. TextBox1.Text = (TrackBar1.Value / SystemInformation.MouseWheelScrollLines).ToString
    21. End Sub
    22. Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
    23. TrackBar1_Value_var = CInt((TrackBar1.Value / SystemInformation.MouseWheelScrollLines))
    24. TextBox1.Text = TrackBar1_Value_var.ToString
    25. End Sub
    26. End Class
    Bilder
    • trackbar.png

      3,5 kB, 847×146, 166 mal angesehen