Laden...

C# 1.1 DataGrid: Event für Zeilen-Selektion?

Erstellt von Shiggy vor 16 Jahren Letzter Beitrag vor 16 Jahren 956 Views
S
Shiggy Themenstarter:in
11 Beiträge seit 2007
vor 16 Jahren
C# 1.1 DataGrid: Event für Zeilen-Selektion?

Hallo,

ich habe ein Problem mit meinem DataGrid. Ich habe eine Form mit Hilfe eines Splitters hoirzontal halbiert. Im oberen Teil befinden sich unter anderem mehrere DataGrids in einem TabControl. Die DataGrids werden, basierend auf Daten einer Datenbank, dynamisch erzeugt. Im unteren Teil befindet sich eine nicht editierbare RichTextBox.

Ich möchte nun folgendes erreichen: je nachdem, welche Zeile in einem DataGrids selektiert wurde bzw. den Fokus bekommt, soll in der RichTextBox eine Beschreibung angezeigt werden.

Da es kein RowSelected-Event oder ähnliches gibt, bzw. ich nichts derartiges gefunden habe, habe ich folgendes versucht:

Ich habe auf jedem der DataGrids einen Listener für das Enter- und das CurrentCellChanged-Event registriert.
Die Listener sind dabei für alle DataGrids die selben, d.h. alle DataGrids haben den selben Enter- und CurrentCellChanged-Listener, da ich ja nicht weiss, wieviele DataGrids letztendlich erzeugt werden.

Nun ergibt sich aber folgendes Problem:
Beim ersten Klick in eine Tabelle wird das Enter-Event ausgelöst. Wenn ich allerdings nicht in die erste Zeile klicke, wird zusätzlich noch das CurrentCellChanged-Event ausgelöst.
Ein ähnliches Verhalten ergibt sich, wenn ich anschließend in eine andere Tabelle klicke und dann wieder in die ursprüngliche Tabelle: klicke ich in die selbe Zeile wie zuvor, wird nur Enter ausgelöst, klicke ich in eine andere Zeile, wird wieder zusätzlich das CurrentCellChanged-Event ausgelöst.

Da ich die anzuzeigende Beschreibung aber auch jeweils dynamisch zusammenbaue, ergibt sich dadurch ein nicht wirklich wünschenswerter Overhead.

Hat jemand eine Vorschlag bzw. eine Lösung, wie sich das vermeiden ließe?

Besten Dank,

Shiggy

476 Beiträge seit 2004
vor 16 Jahren

hallo Shiggy,

die Events werden vom DataGrid aufjedenfall ausgelöst. Was Du steuern kannst ist das behandeln. Zum Beispiel könntest du in der Handling-Routine des einen Events das registrieren eines anderen Events vorübergehend entfernen um das auftretende Event nicht zu behandeln. Das wird dir m. M. nach aber nicht weiterhelfen. Ich fände es sinnvoller wenn deine Ereignisbehandlung keinen redudanten Code aufweist, sprich, das Enter-Event hat andere Auswirkungen wie das CurrentCellChanged-Event. Dann hast du auch keinen Overhead.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de