Laden...

[erledigt] Struct in GUI darstellen [==> PropertyGrid]

Erstellt von Toxo vor 10 Jahren Letzter Beitrag vor 9 Jahren 2.345 Views
T
Toxo Themenstarter:in
64 Beiträge seit 2011
vor 10 Jahren
[erledigt] Struct in GUI darstellen [==> PropertyGrid]

Hallo,

ich suche nach einer Möglichkeit ein struct zu Visualisieren, welches unter anderem aus anderen struct besteht.
Im Prinzip eine Art TreeView für den Datentyp struct indem ich Werte einsehen und manipulieren kann.
Kennt jemand ein geeignetes Steuerelement oder kann mir einen Hinweis geben wie man so etwas bauen kann?

Gruß
David

849 Beiträge seit 2006
vor 10 Jahren

Hi, hört sich für mich nach nem PropertyGrid an.

T
Toxo Themenstarter:in
64 Beiträge seit 2011
vor 10 Jahren

Danke das war genau das richtige Stichwort
😁 👍

E
27 Beiträge seit 2006
vor 9 Jahren

Hallo
habe ein ähnliches Problem, leider weiß ich nicht, wie ich die struct mit dem PropertyGrid verknüpfen kann.
Problembeschreibung:
Ich habe eine Struktur mit ca. 150 Variable (diese wird zur Kommunikation mit einer SPS-Verwendet).
Für Testzwecke möchte ich mir diese in einem extra Fenster Anzeigen lassen und mit bspw. CheckBoxen setzen bzw rücksetzen (Es handelt sich nur um Boolsche Werte).
Ich habe bisher keine Liste (CheckListBox, DataGridView,...), mit der ich eine Struktur direkt Verknüfung kann, gefunden. Alles nur über Arrays oder List<>.
Wenn ich aber bspw. via Reflection die struct in eine Liste kopiere, dann verliere ich doch den eigentlichen Bezug, wenn ich die Variable in der Liste verändere.
Übersehe ich hier etwas oder ist es eventuell gar nicht möglich eine struct dynamisch in der GUI anzeigen zu lassen mit der Möglichkeit der Änderung.
Gruß Marco

771 Beiträge seit 2009
vor 9 Jahren

Du brauchst beim PropertyGrid nur SelectedObject mit einer Instanz deiner Struktur zuweisen: Using PropertyGrid
Die Struktur sollte dabei aber aus Properties bestehen und nicht nur aus "public fields", am einfachsten per "automatic properties".

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo esparki,

wenn man einen struct an eine (andere) Variable zuweist, wird der Inhalt des Structs in die Variable kopiert. Anschließend gibt es zwei "Instanzen" des Structs. Die Änderung der einen beeinflusst die andere nicht.

Anders sieht es bei class aus, denn Klassen sind Referenztypen. Wenn man ein Objekt an eine Variable zuweist, wird in der Variable eine Referenz auf das Objekt gespeichert. Änderungen über die Variable ändern also das Original-Objekt, das überhaupt nicht kopiert wurde.

Eine Änderung von struct zu class würde also wohl das konkrete Problem auf einfache Weise lösen.

Wenn du aus anderen Gründen weiterhin mit structs arbeiten musst, dann musst du sicherstellen, dass der struct nie kopiert, sondern immer mit dem Original gearbeitet wird. Oder dass die Änderungen aus der Kopie (später) zurück ins Original übertragen werden. Für beide Möglichkeiten gibt es verschiedene Lösungsansätze.

Allerdings sind wir bei alledem mindestens nah an [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore