Abgeleitete Button Klasse in flowLayoutPanel einfügen



  • Hallo,

    ich habe folgendes Problem:
    Ich habe eine von System::Windows::Forms::Button abgeleitete Klasse "myappbtn" erstellt. Davon möchte ich nun mehrere dynamisch in einem flowLayoutPanel hinzufügen.

    Ich bekomme allerdings immer bei

    this->flowLayoutPanel1->Controls->Add(myappbtn);
    

    folgenden Fehler:

    error C2664: 'System::Windows::Forms::Control::ControlCollection::Add': Konvertierung des Parameters 1 von 'testwin::appbtn' in 'System::Windows::Forms::Control ^' nicht möglich
    1> Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder
    1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden

    Wie kann ich das so hinbiegen, dass ich das doch adden kann?
    ich bin recht neu in C++, ich hoffe, mir kann jemand helfen.

    Gruß



  • Wenn myappbtn eine Klasse ist, kannst Du myappbtn nicht als Instanz benutzen.

    Vergleiche:

    Controls->Add(myappbtn);
    
    myappbtn^ myappbtnInstanz = gcnew myappbtn();
    Controls->Add(myappbtnInstanz);
    

    EDIT:
    Falsch gelesen, die Klasse heisst ja "appbtn" (laut Fehlermeldung, aus Deinen Text geht das leider nicht hervor), die Instanz "myappbtn".

    Dann ist der Grund vermutlich, dass "myappbtn" vom Typ "appbtn" ist, und nicht vom Typ "appbtn^". Ansonsten: Ist die Vererbung public?



  • ja, die vererbung ist public:

    public ref class appbtn : public System::Windows::Forms::Button
    {
     ...
    }
    

    leider kann ich grad mit dem ^ nichts anfangen, ich hab da mal was gelesen, aber ich konnts nicht so schnell wiederfinden, kannst du mir auf die sprünge helfen?

    nach

    appbtn^ myappbtn = gcnew appbtn();
    

    kommt nur

    error C2228: Links von ".Text" muss sich eine Klasse/Struktur/Union befinden.
    1> Typ ist 'testwin::appbtn ^'
    1> Wollten Sie stattdessen '->' verwenden?



  • ^ ist die "Referenz"... Du solltest mal Grundlagen bzgl. C++/CLI lesen...



  • ah es geht, danke.
    man sollte die fehlermeldungen besser lesen können 😉


Anmelden zum Antworten