UserControls nummerieren und ansteuern

Guybrush2003

Mitglied
Hallo Leute,

ich hab da noch ein Problem mit meinen UserControls (UC):

Über einen Button werden beliebig viele UCs vom gleichen Typ (Kreis) erstellt.
Über einen anderen Button werden die gleichen Ucs, allerdings von einem anderen Typ (Viereck) erstellt.
Sie sollen eine laufende Nummer bekommen, über die sie selbst und ein Array ansteuerbar sind.

Beispiel:

Button(Kreis) wird 5x gedrückt ---> es entstehen 5 Kreis-UCs.
Button(Viereck) wird 3x gedrückt ---> es entstehen 3 weitere Viereck-UCs.
Der Zähler soll sich also pro Klick um eins erhöhen, ganz gleich welche Reihenfolge der Button-Klicks.
Wichtig: Jedes UC soll eine feste Nummer bekommen, über die es ansteuerbar wird.

Mein Problem ist also, den einzelnen UCs eine Nummer zuzuweisen, um sie nachträglich anzusteuern.

Hat da jemand eine Idee?

MfG

Gerd
 
Ich weiß jetzt nicht, wo dein Problem liegt - Arrays hast du doch sowieso schon im Auge.
Du musst doch bloß die jeweilig erstellte Instanz in ein solches packen, dann kannst du doch über die Nummer von dem Array auf den richtigen Index des anderen Arrays...
Oder du Baust dir eine Zwischen-Klasse, in der die Instanz des UC und der zugehörige Schlüssel für das zweit-Array mit drinstecken und packst das in das Array...

Besser als ein Array ist dafür aber ehen eine ArrayList, da sie dynamisch erweiterbar ist (wie der Vector in Java) .
 
Habe eine Möglichkeit gefunden um Zwischen den Objekten zu Wechsel.
Der Kreis und das Rechteck müssen nicht umbedingt vom Typ UserControl sein, meine Lösung ist etwas anders.

ps Wie kann ich hier Zip Dateien posten, habe keine Hompage, der Qellcode meiner Tools und der Beispiellösung würde übermehrer Seiten gehen.

Die Tools entahlten den Vector, SortedMap, SortedSet, Kreis, Rechteck und vieles mehr.
 
Gibt es da keine Möglichkeit, im Konstruktor eine Nummer zuzuweisen? So ähnlich wie ich mit "this.Name" einen eindeutigen Namen gebe, kann ich da nicht mit einem "this.irgendwas" eine eindeutige Nummer vergeben?

MfG

Gerd
 
Ich weiss ja nicht, wie du deine Klasse gebaut hast.
Ich würde das Problem über ein Klassenattribut lösen.
Du deklariest einen Zähler der ist dein Klassenattribut und muss also Statisch sein, zusätzlich eine Eigenschaft deiner eindeutigen Nummer.

Im Konstruktor zählst du dann hoch und weisst die letzte Nummer deiner ID zu.
 
Deklaration
Code:
static int m_iCounter = 0;
int m_iID = 0;

Im Konstruktor
Code:
m_iCounter++;
m_iID = m_iCounter;
 
Hallo,

das m_iID ist doch eine normale Integer Variable. Sie hätte immer den gleichen Wert wie der Zähler, aber damit habe ich immer noch keine konkrete Verknüpfung mit den UCs.

Oder öffne ich jedesmal eine neue Instanz vom jeweiligen UC? Wenn ja, wie kann ich dann auf die Vorgänger zugreifen? Gibt es so etwas wie z.B. "wechsel zu der Instanz mit der m_iID=5"?

MfG

Gerd
 
Hallo,

So ein ähnliches Problem habe ich auch, nur benutze ich noch eine Vererbung dazu. Meine verschiedenen UCs haben alle die gleiche "Maske", die vererbt wird. Wenn ich die Daten von meiner Hauptklasse in die vererbte UC Klasse übertragen will, dann kommt immer der Buildfehler ".... erfordert 0 Argumente". Was bedeutet das?

Gruß

Michael
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück