VscrollBar MouseWheel Event

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von drschef.

    VscrollBar MouseWheel Event

    In einem meiner früheren Beiträge ging es um die Darstellung einer Kollektion von Thumbnails analog dem MS-Explorer. Meine bisherige Lösung arbeitet mit dem FlowLayoutPanel, welches wie geschaffen für das Problem schien. Es löst automatisch die Umordnung der Bilder beim Resize-Ereignis und setzt automatisch die Events der integrierten Scrollbar um. Es hat nur einen Nachteil, der es total outet: Es lässt keine Koordinaten größer als 32767 zu, das heißt es werden nur Koordinaten bis 16 Bit umgesetzt. Die gleiche Grenze gilt auch für andere Controls wie TableLayoutPanel, Panel, PictureBox. In einer vertikalen einspaltigen Bildkollektion ist man da bei wenigen Hundert Bildchen am Ende.

    Ein neuerlicher Anlauf erfolgt mit einem Panel, dessen begrenzter Inhalt algorithmisch umgewälzt wird, gesteuert durch eine separate VSCrollBar. Funktioniert mi dem Scroll-Event gut, aber gar nicht mit dem MouseWheel Event. Das heißt der offerierte Name löst kein Ereignis aus. Meine Recherchen an vielen Stellen brachten zwar viele Hinweise auf die Problemstellung aber keine Antwort. Vielleicht hat doch jemand einen Tip.

    drschef schrieb:

    Vielleicht hat doch jemand einen Tip.
    Wie sieht Dein kommunizierender Code aus?
    -------------
    Ich habs mal fix ausprobiert.
    Schmeiß die VScrollBar raus, nimm eine TrackBar, gib der vertikale Ausrichtung und feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

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

    Danke für die umgehende Reaktion. Leider wird bei mir heute nicht mehr viel.

    Schmeiß die VScrollBar raus, nimm eine TrackBar, gib der vertikale Ausrichtung und feddich.


    Danke für den Tip, aber das völlig andere Outfit geht mir gegen den Strich.

    Was den Code anbelangt, gibt's da nicht viel zu sagen:

    Quellcode

    1. Private Sub VSC_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles VSC.MouseWheel
    2. Messagebox.Show"Mousewheel") 'Reagiert nicht!!!!!
    3. End Sub
    4. Private Sub VSC_Scroll(sender As Object, e As System.Windows.Forms.ScrollEventArgs) Handles VSC.Scroll
    5. 'Verschiebungsalgorithmus, wird normal ausgeführt
    6. End Sub

    schaue einmal hier hinein ...


    Neuer Tag - neues Glück. Hier mal das , was von dem 200 Zeilen umfassenden Beispiel echt für mich übrig geblieben ist:

    Quellcode

    1. Private Sub panel1_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseWheel
    2. 'http://msdn.microsoft.com/de-de/library/system.windows.forms.control.mousewheel(v=vs.110).aspx
    3. 'panel1 ist irgend ein beliebiges unsichtbares Panel
    4. 'panel1_MouseWheel braucht keinen Inhalt!!!!
    5. 'panel1_MouseWheel wirkt trotzdem auf die Position der VScrollBar mit VSC.SmallCharge wie es sich gehört
    6. 'Das Event darf sich ofensichtlich nicht auf die VScrollBar selbst beziehen
    7. 'Deshalb feuert folgendes Event nicht:
    8. 'Private Sub VSC_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles VSC.MouseWheel
    9. End Sub


    Ich kann es nicht fassen. Aber so wie es da steht funktioniert es.

    Vielen Dank an VB1963!!!