Liste mit Controls [Browsable] machen.



  • Hallo zusammen,

    ich möchte gerne ein Paar Panels per Click ein und ausblenden lassen.

    Ziel ist es aktuell dies automatisiert zu erledigen, d.h. ich würde das gerne so implementieren, dass ich einfach im Desinger eine Liste mit den zum benutzersteuerelement hinzugefügten Panels/Controls fülle. Diese müsste ja mit parent->controls möglich sein.

    Einen bool Wert habe ich bereits geschafft, dass er im Designer auswählbar ist.

    bool bRetractable;
    		[Browsable(true)]
    		property bool IsRetractable
    		{
    			bool get()
    			{
    				return bRetractable;
    			}
    			void set(bool value)
    			{
    				bRetractable = value;
    			}
    		}
    

    Kann mir einer helfen wie ich das mit der Liste von Controls mache? Evtl. sogar das ich sogar aus den verschiedenen gleich auswählen kann.

    Oder bin ich evtl. auf dem Holzweg und es gibt eine viel bessere möglichkeit das zu implementieren?



  • Du willst Deinen *Eigenen* Designer machen? oder was manst Du mit "Designer"... was soll der wie machen?

    Oder willst Du für ein property im MS-WinForms-Designer passende andere Properties auswählbar machen?



  • Ich möchte ein property im Visual Studio WinForms-Designer auswählbar machen.

    Ich möchte ein Benutzersteuerelemt machen und dies mit z.b. einem Panel befüllen. (wie das geht weiß ich schon)

    Jetzt hätte ich gern im Designer des Benutzersteuerelemt ein property in dem ich dieses oben hinzugefügte Panel auswählen kann. Das soll dann einer Liste hinzugefügt werden die ich dann durchgehen kann und auf Visible = false setzen kann. 🙂

    Mit einem bool wert habe ich das schon hinbekommen (siehe code oben).
    Aber mit einer Liste geht das so einfach nicht 😞 bzw. weiß ich garnicht wie ich ansetzen soll



  • Designer-Support ist etwas komplexer. Für mehr Info siehe:
    http://msdn.microsoft.com/en-us/library/c5z9s1h4.aspx
    http://msdn.microsoft.com/en-us/library/a19191fh.aspx

    Wenn DU einfach nur ein Panel auswählen willst, dann nimm eingach ein passendes Property auf:

    [Browsable(true)]
    public Panel P { get; set; }
    

    Dann kannst Du im Designer alle Panels auswählen die dort drin sind...



  • Danke für deine Hilfe,

    hmm also das mit dem Panel ok, aber dann muss ich ja für jedes Panel Code schreiben.

    Kann ich das nicht irgendwie automatisch machen lassen?

    evtl. mit einer for each schleife?

    // Ich progge mit C++

    for each (Controls^ control in Controls)
    {
    // hier soll dann eine liste mit den controls gefüllt werden
    }
    
    // hier soll dann die elemente oben aus der liste im designer eingefügt werden können.
    [Browsable(true)]
    property list<Controls^> liste    // wird wohl nicht gehen oder?
    {
        // wie mach ich jetzt die get // set?
        // das hier wird wohl kompletter nonsence sein
        list get() 
        { 
             // hier ne for schleife die den inhalt ausgibt? oder einfach nur return liste? 
        }
        void set(Controls^ in) 
        {
            // hier mit pushback? 
            liste.push_back(panel);
        }
    }
    

    Also um es nochmal zusammen zu fassen, im Endeffekt brauch ich zwei listen, einmal eine liste in der die ganzen panels gespeichert sind und zum anderen eine liste in der ich !!!! bestimmte !!!! panels hinzufügen kann.
    Ich würde das aber ungern codieren müssen.



  • 1. Du machst *kein* C++ sondern C++/CLI, was i.d.R. keinen Sinn macht! Bitte lies:
    http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/

    2. Ich verstehe imme rnoch nicht was Du WO willst. Wenn Du im Code eine Liste aller Panels willst, dann musst Du dies eben machen... (Rekursiv mit Childs).

    Aber wie gesagt: Ich habe es nicht verstanden, was Du genau willst... auch habe ich nicht verstanden warum Du dies nicht mit C# machst.... C++/CLI wird nur für InterOp verwendet...



  • ja ich mache das weil ich in einem praktikum bin und das projekt so vorgegeben wurde.

    ich muss die gui umbauen, diese besteht aus ca. 80 teilelemente.
    ziel ist es per button bestimmte sachen ein und auszublenden und dies so dynamisch wie möglich.

    d.h. ich arbeite mit dock usw.

    so jetzt soll nicht für 80 elemente alles gecodet werden sonder das soll soweit wie emöglich mit dem designer geschehen.

    jetzt möchte ich eben ein panel als benutzerelement machen. dieses panel kennt ja seine controls. so jetzt möchte ich im designer die panels in eine liste hinzufügen die ausgeblendet werden sollen.

    dann möchte ich eine funktion schreiben die diese liste durch geht und das jeweilige panel ausblendet

    der button ruft dann beim klick diese funktion auf.



  • Keiner?



  • Ich glaube entweder versteht Dein Problem niemand oder niemand will Dir sagen, dass Du um Programmierer nicht rum kommst...


Anmelden zum Antworten