ScrollEvent der Maus abfragen

  • C#

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

    ScrollEvent der Maus abfragen

    Hallo, ich bin gerade dabei den 3D Szenen Editor für meine Engine zu erstellen. Soweit sogut, nun möchte ich aber das die Kamera beim Scrollen in die Szene hineinbewegt oder herausbewegt wird. Das Bewegen der Kamera wäre kein Problemm. Es ist viel mehr so, dass ich gerne wüsste wie ich an die Informationen komme ob gescrollt wird oder nicht. Ich rendere das ganze auf ein Panel mit OpenGL. Jedoch funktioniert das OnScroll event nicht, da ich ja keine Scrollbars habe.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Moment. Mit Scrollen ist ja normalerweise ein Blättern in einer Liste/einem DGV, … gemeint. Also wenn der Inhalt eines Controls größer ist als das Control selber.
    Wenn Du die Mausradbewegung meinst, gibt es für das Control das Event und den passenden EventHandler namens MouseWheel.
    Bilder
    • MouseWheel.png

      9,26 kB, 1.083×95, 39 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ja, dass dachte ich auch. Aber es tut sich nichts in dem event

    C#-Quellcode

    1. using Genesis.UI;
    2. using System;
    3. using System.Collections.Generic;
    4. using System.Linq;
    5. using System.Text;
    6. using System.Threading.Tasks;
    7. using System.Windows.Forms;
    8. namespace GFX_Scene_Editor
    9. {
    10. public class EditorPanel : System.Windows.Forms.Panel
    11. {
    12. public event MouseEventHandler ScrollUp;
    13. public event MouseEventHandler ScrollDown;
    14. public EditorPanel()
    15. {
    16. this.SetStyle(ControlStyles.Selectable, true);
    17. this.TabStop = true;
    18. this.MouseWheel += OnMouseWheel;
    19. }
    20. private void OnMouseWheel(object sender, MouseEventArgs e)
    21. {
    22. if(e.Delta > 0)
    23. {
    24. if(this.ScrollUp != null)
    25. this.ScrollUp(this, e);
    26. }
    27. else
    28. {
    29. if(this.ScrollDown != null)
    30. ScrollDown(this, e);
    31. }
    32. }
    33. protected override void OnMouseDown(MouseEventArgs e)
    34. {
    35. this.Focus();
    36. base.OnMouseDown(e);
    37. }
    38. protected override bool IsInputKey(Keys keyData)
    39. {
    40. if (keyData == Keys.Up || keyData == Keys.Down) return true;
    41. if (keyData == Keys.Left || keyData == Keys.Right) return true;
    42. return base.IsInputKey(keyData);
    43. }
    44. protected override void OnEnter(EventArgs e)
    45. {
    46. base.OnEnter(e);
    47. }
    48. protected override void OnLeave(EventArgs e)
    49. {
    50. base.OnLeave(e);
    51. }
    52. protected override void OnScroll(ScrollEventArgs se)
    53. {
    54. base.OnScroll(se);
    55. }
    56. protected override void OnPaint(PaintEventArgs pe)
    57. {
    58. }
    59. }
    60. }


    --------------------------
    Edit geht, vielen dank. Habe das nur nicht gesehen, da es nicht gelistet ist in den Eigenschaften bzw. events.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Andy“ ()

    Andy schrieb:

    es tut sich nichts in dem event
    Ist die Prozedur verknüpft?
    Setz da mal einen Haltepunkt rein.
    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!
    @RodFromGermany: Der Abschlussedit, dass es doch klappt, kam 06:23 Uhr, ist aber leicht zu überlesen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.