LabVIEWForum.de
.NET Steuerelemente dynamisch erzeugen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: ActiveX & .Net (/Forum-ActiveX-Net)
+---- Thema: .NET Steuerelemente dynamisch erzeugen (/Thread-NET-Steuerelemente-dynamisch-erzeugen)



.NET Steuerelemente dynamisch erzeugen - seb- - 01.02.2011 16:55

Hallo,
Ich habe mir in c# ein eigenes Steuerelement erstellt.
Das Einbinden in einen .NET Container funktioniert einwandfrei.

Meine Frage:
Ich möchte dynamisch Instanzen dieses Steuerelementes erstellen, also z.b. aus einer FOR-Schleife heraus. Ist dies möglich?

Wenn ich mein Steuerelement über den Konstruktorknoten instanziere habe ich zwar kein Problem mit der dynamischen Erzeugung,
jedoch weiß ich leider nicht, wie ich meine aus dem Konstruktorknoten erhaltene Referenz mit einem .NET Container verknüpfe.
Ist dies möglich?

Technische Daten:
Ich arbeite mit LabView2010 und habe meine Steuerelementebibliothek mittels Visual Studio 2008 unter Verwendung von .NET 3.5 erstellt.


Vielen Dank im Voraus
Sebastian


.NET Steuerelemente dynamisch erzeugen - Y-P - 02.02.2011 07:37

Bahn. Das ist bestimmt was für rolfk. Big Grin
Kannst Du mal Dein Bsp. hochladen zum rumprobieren?

Gruß Markus


.NET Steuerelemente dynamisch erzeugen - seb- - 02.02.2011 09:49

Hallo Markus,
Beispiel kommt sofort.
Habe ein .NET Steuerelement (hier eine simple LED) auf 3 Arten instanziert:

1. Eine einzelne LED in einem .NET Container. Funktioniert einwandfrei
2. Ein .NET Container in einer FOR-Schleife in der Hoffnung, dass am Ende 4 Instanzen des Steuerelementes entstehen. Funktioniert so nicht.
3. Erzeugung der Instanzen über den Konstruktorknoten. Es werden zwar mehrere Instanzen erzeugt, jedoch kann ich diese nicht zur Anzeige bringen, d.h. mit einem .NET Container verknüpfen o.ä.

Das Beispiel wurde mit LV2010 erstellt. Das Steuerelement (led.dll) benötigt .NET Framework 3.5.


Vielen Dank schon einmal.

Gruß
Sebastian


.NET Steuerelemente dynamisch erzeugen - oenk - 02.02.2011 10:17

Hier meine zwei/drei Gedanken dazu:

' schrieb:2. Ein .NET Container in einer FOR-Schleife in der Hoffnung, dass am Ende 4 Instanzen des Steuerelementes entstehen. Funktioniert so nicht.
Kann so nicht funktionieren, da du immer wieder auf das gleiche Objekt zugreifst. Zum Beweis: mach mal eine "Probe" auf den Draht zwischen den ersten beiden for-Schleifen. Dort wirst du sehen, dass es 4mal die gleiche Referenz ist. Wenn du es so machen möchtest, dann verweise ich auf diesen link. Dort geht es zwar um Occurences, ist aber im Endefekt das Selbe in grün.

' schrieb:3. Erzeugung der Instanzen über den Konstruktorknoten. Es werden zwar mehrere Instanzen erzeugt, jedoch kann ich diese nicht zur Anzeige bringen, d.h. mit einem .NET Container verknüpfen o.ä.
IMHO würde das in der .NET Umgebung so ja auch nicht funktionieren, oder? Du musst ein Control ja auch immer irgend einem expliziten Container zuweisen. Was ist, wenn du in LV einen .NET Contrainer mit einem Panel erstellst und diesem .NET Panel immer die entsprechende Instanz deines gerade anzuzeigendes Controls übergibst?


RE: .NET Steuerelemente dynamisch erzeugen - seb- - 07.02.2011 10:22

(02.02.2011 10:17 )<<oenk>> schrieb:  IMHO würde das in der .NET Umgebung so ja auch nicht funktionieren, oder?

Das war der richtige Denkanstoß, danke.

Konnte das Problem jetzt für mich sinnvoll lösen.

Habe mein Steuerelement zweigeteilt:
- Eine Klassenbibliothek, die ich über den Konstruktorknoten Instanzieren kann, wie ich will
- Eine Steuerelementebibliothek, der ich mit einer Funktion setReference eine Referenz auf die anzuzeigende Klasse übergeben kann

So kann ich beispielsweise 10 Anzeigeobjekte auf dem Panel platzieren und über setReference entscheiden, welche Instanzen gerade dargestellt werden sollen.

Ist für mich eine schöne Lösung.

Danke an alle
Sebastian