WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   .NET 1.1 Winforms DataGrid Events (http://www.wcm.at/forum/showthread.php?t=191664)

delphirocks 16.05.2006 12:26

.NET 1.1 Winforms DataGrid Events
 
Hallo,

weiß jemand, wie man ein "Click" event auf einem Datagrid abfangen kann, wenn der Fokus auf einer bestimmten Zelle liegt?

Ich möchte auf die Zelle des Grids klicken und damit den darunterliegenden Wert ändern (das Grid ist an eine DataTable gebunden).

Wenn der Fokus NICHT am Grid liegt, wird der Eventhandler aufgerufen, wenn der Fokus auf einer Zelle des Grids liegt, dann nicht :(

Biri 17.05.2006 14:44

hi,

komisches verhalten, das klick event sollte eigentlich immer ausgelöst werden...

auswendig fällt mir ein: reagieren auf "onMouseDown" ereignis.
das Eventargs enthält die koordinaten des geklickten punktes.
Diesen kann man dann umrechnen und feststellen, auf welches element man geklickt hat - hört sich ev. kompliziert an, is aber garnicht so arg.

häng mal dein projekt als .zip hier an, dann kann ich mirs bei gelegenheit genauer ansehen.

fg
hannes

delphirocks 17.05.2006 20:53

Hallo,

danke für dein Angebot. Ich hab's aufgegeben, nachdem ich mich gestern stundenlang damit geärgert habe.

Der Event wird nicht ausgelöst, wenn der Fokus auf einer Zelle liegt. Liegt er jedoch außerhalb des Grids, dann schon.

Ich habe das Ganze jetzt mit dem MFC-Grid von Codeproject umgesetzt (unser Produkt ist eine gemischte MFC/.NET 1.1 Applikation).

Ich wollte nicht mit der Maus auf die Zelle klicken, sondern einfach eine Zahl in Abhängigkeit des darunterliegenden Datenbankfeldes mit shift-key up/down erhöhen bzw. erniedrigen. Zusätzlich sollte die Zelle noch ganz normal editiert werden können. Außerdem sollte eine Selection der ganzen Zeile möglich sein.

Das Winforms-Datagrid in der 1.1er scheint ziemlich beschränkt zu sein (um z.B. die ganze Zeile zu selektieren, muß von Hand nachprogrammiert werden). In der 2.0er ist's glaub' ich um einiges besser (die Rowselection funktioniert hier z.B. per property).

Das MFC-Grid funktioniert übrigens super und ist auch sehr einfach zu verwenden.

lg

Biri 21.05.2006 19:59

hmm - eigenltich schlimm, weil ich dachte, dass sowas einfach gehen sollte - naja, der hund liegt oft im detail.

Zitat:

Ich wollte nicht mit der Maus auf die Zelle klicken, sondern einfach eine Zahl in Abhängigkeit des darunterliegenden Datenbankfeldes mit shift-key up/down erhöhen bzw. erniedrigen.
Dann ist aber schon klar, dass du kein click event bekommts, oder?
Ebent sollte OnKeyDown sein (nicht onChar, weil Pfeiltasten kein OnChar auslösen)

hab mit dem grid aber noch net wirklich viel gemacht, um details hier auswendig zu wissen - aber wenn du deine problem gelöst hast, ist das ja - projektmäßig betrachtet - das wichtigste. ;)

fg
hannes

delphirocks 21.05.2006 22:18

Keydown oder Click, das war eigentlich egal.

Im 2.0er funktioniert's auch einwandfrei - und einfach, denn da gibts ein KeyPreview Event.

Das Grid in der 1.1er ist überhaupt ein ziemlicher Schmarren, wie unsere bayrischen Nachbarn zu sagen pflegen.

Leider war aber 2.0 keine Option hier, deswegen die MFC Lösung.

Also nocheinmal danke !


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag