2009-05-04 10 views
0

Ich versuche, ein Business-Objekt von einem WinForm an ein anderes WinForm für die Änderung zu übergeben und dann die Textfelder usw. auf dem ersten Formular mit den aktualisierten Werten neu zu füllen.Speicheradresse des Leseobjekts

Es scheint jedoch, dass die Objektwerte, die in der zweiten Form festgelegt werden, nicht "kleben", wenn die Codekontrolle zu der ersten Form zurückkehrt.

Gibt es eine Möglichkeit, den Speicherort eines Objekts in VB.NET anzuzeigen? Ich möchte zunächst sicherstellen, dass die Objektvariable im zweiten Formular auf die gleiche Speicheradresse verweist wie das Objekt im ersten Formular. Dann kann ich es von dort nehmen.

In einem separaten VB-Projekt habe ich ein einfaches Objekt an ein zweites Formular übergeben, die Werte geändert und die Werte des Objekts auf dem ersten Formular erneut angezeigt. Es hat gut funktioniert. In meiner echten App übergebe ich ein Objekt, das eine Eigenschaft eines anderen Objekts ist, weshalb es möglicherweise nicht funktioniert.

LÖSUNG: Das Problem war, dass ich eine DeepCopy() -Funktion verwendet habe, die ich gefunden habe, um das Kopieren der Eigenschaften eines Objekts zu einem anderen zu vereinfachen. Wenn Sie diese Funktion entfernen und die Werte manuell auf das übergebene Objekt im zweiten Formular setzen (z. B. obj.property1 = searchResult.property1), verhält sich alles wie erwartet.

Antwort

3

Sie können die Speicheradresse eines Objekts in VB.NET nicht sehen.

Können Sie uns ein bisschen Code zeigen? Vielleicht können wir den Fehler erkennen.

Welche Art von Objekt umgehen Sie? Wenn das Objekt ein Werttyp ist, wird dies nicht funktionieren (mit Struktur anstelle von Klasse deklariert).

+0

Ich war gerade dabei, das zu sagen. In .NET-Objekten verhalten Sie sich normalerweise so, wie Sie HardCode beschreiben. Irgendein Code wird helfen, den Finger auf das zu legen, was passiert. –

Verwandte Themen