Hallo,
ich möchte für ein Programm mit mehreren Tabs eine Änderungsüberwachung für mehrere Steuerelemente einbauen, d.h. wenn zwischen zwei "Besuchen" auf einem Tab an einem Steuerlement (auch auf anderen Tabs) etwas verändert wurde, möchte ich das Abfangen und dementsprechend behandeln können.
Für recht einfache Steuerelemente, wie z.B. eine ComboBox ist das auch kein Problem - ich kann den ausgewählten Wert in einem String (bzw. wenn ich das für jeden Tab einzeln haben möchte in einem String-Array mit so vielen Elementen wie Tab Pages) speichern, im entscheidenden Moment den Wert des String mit dem ausgewählten Wert der ComboBox vergleichen und nach der entsprechenden Operation mit dem =-Operator dem Speicherstring den neuen (aktuellen) Wert der ComboBox-Auswahl zuweisen.
dim strOldValue as string
private sub test ()
if ComboBox1.Text <> strOldValue then
'do something
strOldValue = ComboBox1.Text
else
'do nothing or something else
end if
end sub
Habe ich aber nun ein komplizierteres Gebilde, z.B. eine CheckedItemCollection einer CheckedListBox zwischenzuspeichern, so funktioniert das nicht mehr. Zum einen muss ich als Vergleichsoperator .Equals einstetzen, da "=" zum Vergleich für CheckedItemCollection nicht definiert ist, aber - und das wiegt deutlich schwerer - selbst dann geht es nicht, da es bei der Speicherung mit dem =-Operator offenbar zu einer Referenz- und nicht zu einer Wertezuweisung kommt. Damit funktioniert natürlich nach dem 1. Durchlauf die Änderungsüberwachung nicht mehr, da sich der Wert der Speichervariablen auch immer mit ändert. Ein Umwandeln in ein String-Array wäre theoretisch denkbar, würde aber mit viel unelegantem Schreiben einher gehen, insbesondere dann, wenn ich das für jeden Tab machen will und damit mehrere dieser Speichervariablen in einem Array mehrfach vorhalten möchte.
Ist dafür eine elegante Lösung bekannt?
Grüße und Danke, TS