Laden...

datagridview mousewheel event ignorieren

Erstellt von prom vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.824 Views
P
prom Themenstarter:in
187 Beiträge seit 2008
vor 16 Jahren
datagridview mousewheel event ignorieren

wie schaffe ich es, dass ich im DGV das MouseWheel-Event ignoriere???

Zweck: Möchte das Scrollen nur aktivieren, wenn die Maus über dem Scrollbalken ist. Ansonsten soll nämlich eine Funktion ausgeführt werden, die den Wert in der Zelle erhöht/erniedrigt. Leider passiert im Moment immer beides...

Und warum ist e.Button im MouseWheel - event IMMER none, auch wenn eine Taste während des scrollens gedrückt ist???

mfg

5.299 Beiträge seit 2008
vor 16 Jahren

Hi!

Ohne irgendwas getestet zu haben:
Du könntest das DataGridView beerben, und dann OnMousWheel überschreiben, und den Basis-Aufruf unterdrücken.

Und dann solch selbstgebasteltes Grid im Form verwenden.

Der frühe Apfel fängt den Wurm.

P
prom Themenstarter:in
187 Beiträge seit 2008
vor 16 Jahren

also das Event irgendwie im Programm abzufangen ist nocht möglich, oder?

Aber ich hab' sowieso ein DGV erstellt, dass sich von der Größe her immer nach den angezeigten Spalten und einem Maximum richtet, sodass ein transparenter Hintergrund simuliert wird. Könnte gleich mein eigenes DGV machen, dass es erlaubt, das scrollen zu deaktivieren...

Danke
lg

5.299 Beiträge seit 2008
vor 16 Jahren

also das Event irgendwie im Programm abzufangen ist nocht möglich, oder? Vermutlich kann man das MouseWheel-Event abonnieren, aber du willst es ja nicht verarbeiten, sondern verhindern, dasses gefeuert wird.

Der frühe Apfel fängt den Wurm.

P
prom Themenstarter:in
187 Beiträge seit 2008
vor 16 Jahren

ich habe jetzt das DGV einfach abgeleitet und das OnMouseWheel-Event überschrieben.

Danke für eure Hilfe

lg

P
prom Themenstarter:in
187 Beiträge seit 2008
vor 16 Jahren

gibt's hier auch die Möglichkeit, das Mausevent weiterzugeben?
Sprich das Scrollen zu verwerfen, aber das Event weiterzugeben, sodass man es auch zur Laufzeit benutzen kann?

Wenn ja, wie?

5.742 Beiträge seit 2007
vor 16 Jahren

Also, wenn ich dich richtig verstehe, musst du nur in der überschriebenen Methode machen, was in [FAQ] Eigenen Event definieren / Information zu Events steht.

P
prom Themenstarter:in
187 Beiträge seit 2008
vor 16 Jahren

Also muss ich selbst ein neues Event erzeugen, welches das MouseEventArg weitergibt, oder?

915 Beiträge seit 2006
vor 16 Jahren

Zwar wird das folgende bemekert werden, da es das OOP prinzip ausser kraft setzt aber hätte damit kein Problem 😉


        public new event MouseEventHandler MouseWheel;
        protected override void OnMouseWheel(MouseEventArgs e)
        {
            if (this.MouseWheel != null)
                this.MouseWheel(this, e);

            //base.OnMouseWheel(e);
        }

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

P
prom Themenstarter:in
187 Beiträge seit 2008
vor 16 Jahren

danke, so geht's.

protected override void OnMouseWheel(MouseEventArgs e)
        {
            if (!ignoreMouseWheel)
                base.OnMouseWheel(e);
            else
                this.MouseWheel(this, e);
        }
        public new event MouseEventHandler MouseWheel;