Laden...

In eigener Listview herrausfinden ob die Methode Add oder AddRange verwendet wurden

Erstellt von *neo* vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.499 Views
*
*neo* Themenstarter:in
299 Beiträge seit 2006
vor 9 Jahren
In eigener Listview herrausfinden ob die Methode Add oder AddRange verwendet wurden

Hallo,

ich habe mir eine eigene Listview gebaut.
Ich müsste in der Methode

protected override void WndProc(ref Message msg)

herrausfinden ob das Item mittels Add oder AddRange eingefügt wurden. In beiden Fällen wird die Methode WndProc pro Item aufgerufen egal ob Add oder AddRange. Da ich unterschiedliche Behandlungen durchführen muss muss ich einen Unterschied erkennen ob das Item mittes Add oder AddRange eingefügt wurde.

Grüße und danke

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo neo,

warum musst du einen Unterschied erkennen?

Und warum verwendest du keine eigene Add und AddRange-Methode, die z.B. in einer bool-Methode vermerken, welche der beiden Methoden (zuletzt) aufgerufen wurde.

herbivore

C
21 Beiträge seit 2013
vor 9 Jahren

Wenn du mit Add bzw. AddRange ein Objekt der Liste hinzufügst, kannst du doch einfach eine weitere Variable mit in das Objekt legen. So weist du das später an jeder beliebigen Stelle wie du das Objekt hinzugefügt hast.

*
*neo* Themenstarter:in
299 Beiträge seit 2006
vor 9 Jahren

Hallo,

ich könnte mir grundsätzlich natürlich noch eine Eigenschaft bauen, dass ist richtig. Müsste aber bei jedem Aufruf diese Eigenschaft vorher füllen. Da ich an dem Projekt nicht jede Stelle ansteuern will um die Änderung einzufügen, hatte ich mir gedacht, dass ich in der WndProc Methode prüfe durch was die Items eingefügt werden.

Grüße

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo neo,

Müsste aber bei jedem Aufruf diese Eigenschaft vorher füllen.

nicht wenn du es so machst, wie ich vorgeschlagen hast, zumindest nicht explizit. Du musst dann nur die Aufrufe austauschen. Das musst du noch nicht mal manuell machen, sondern könntest das mit einem AOP-Tool (z.B. PostSharp) tun. Dann kannst du auch keinen Aufruf übersehen.

Du hast noch nicht geschrieben, warum, du einen Unterschied erkennen musst. Ich denke, es macht vom Ergebnis her keinen Unterschied, ob in einem bestimmten Code-Block drei mal direkt hintereinander Add oder einmal AddRange mit drei Elementen aufgerufen wird. Wenn es aber darum geht, dass der Benutzer eine jeweils andere Operation angestoßen hat, reicht es, sich auf oberster Ebene (also beim Einstig in den entsprechenden EventHandler) per boolscher Variable zu merken, um welche Benutzeraktion es sich handelt.

herbivore