Announcement

Collapse
No announcement yet.

Beste Möglichkeit ein Forms Control zu "Clonen"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Beste Möglichkeit ein Forms Control zu "Clonen"

    Hallo,

    ich bin dabei eine Software zu basteln die innerhalb eines Fensters mehrere gleiche Controls anzeigen soll.
    Am leichtesten Erklären lässt sich das ganze mit einem TabControll. Angenommen ich will mehrere Tabs zur Laufzeit erzeugen die alle (bis auf die Inhalte natürlich) eine gewisse Menge an gleichen Controlls zur Verfügung stellen.

    Nun habe ich das schon ein paar mal gemacht. Einmal habe ich den Designercode kopiert etwas abgeändert und eben in einer eigenen Methode benutzt, einmal habe ich eine Abgeleitete Klasse eines Controlls erstellt und dieser die zusätzlichen Controlls "eingeimpft"

    Jetzt stehe ich wieder vor diesem Problem, und eigentlich würde mich mal interessieren was ihr für die beste Lösung dieses Problems haltet.

    Also nochmal kurz und prägnant:

    Am Beispiel eines TabControlls das zur Laufzeit neue (vom Aufbau her) gleiche TabPages erzeugen soll, wie würdet ihr das am besten Angehen?



    lg

    BaDo

  • #2
    Ich würde ein entsprechendes UserControl erstellen und das so oft wie nötig instanziieren.

    Comment


    • #3
      Alternativ könnte man auch eine (ggf. statische) Methode bauen die so ein Control zusammen baut. Diese Funktion kann auch Parameter haben wie z.B. den TabNamen um beim obigen Beispiel zu bleiben. Das ganze nennt man dann Factory Pattern und kann dann an mehreren Stellen im Code verwendet werden.

      Comment


      • #4
        Für das Factory Pattern kann man sich ja denn Code von InitializeComponents aus dem UserControl klauen das man einmal im Designer zusammengeklickt hat

        Comment


        • #5
          Factory Pattern ja das find ich gut, so werde ich das dieses mal angehen
          Das mit dem User Controll hab ich wie gesagt schon mal gemacht das geht eigentlich auch ganz gut, ich denke aber das ich mit dem FactoryPattern spätere Änderungen möglicherweise besser abfangen kann.
          (Was jetzt nicht heißen soll, dass dies mit dem User Controll nicht möglich wäre ^^)

          Danke vielmals,
          und schönen Abend

          Comment


          • #6
            Ich habe da Zweifel. Du solltest dir nicht die Möglichkeit nehmen das UserControl im Designer zu designen. Wenn Factory Pattern dann mit einem UserControl aber nicht anstatt einem UserControl.

            Comment


            • #7
              Muss ich Ralf recht geben. Im Prinzip ist so ein UserControl auch nichts anderes als eine Factory. Wenn ich mich recht erinnere kann man auch im Code Behind noch Logik hinzufügen. Dadurch lassen sich sogar relativ komplexe Szenarien abhandeln und Du hast immer noch den netten Bonus dass Du das ganze ggf. auch im Designer benutzen könntest.

              Comment


              • #8
                ich bin da vielleicht nicht am effektivsten mit meiner Methode aber ich mache es immer so:
                ich lege mir ein "master-tabsheet" an, welches alle von mir erstelten komponenten enthält (button, textbox, panel, ...)
                diese ist für den kunden natürlich während der laufzeit nicht sichtbar, dient aber als copysource.
                d.h. ich greife später auf datenquellen zu, welche mir vorgeben welche und wieviele controls benötigt werden. nun greife ich jeweils auf die sourcecontrols zu, überschreibe/definiere die events und erzeuge diese nun neu auf dem dynamischen tabsheet.

                somit habe ich halt über die "Mastercontrols" die möglichkeit schnell, grafisch und ... die eigenschaften zu ändern welche in allen copierten elementen gleich sein soll.

                Comment

                Working...
                X