Benutzersteuerelemente II



  • Nur mal rein prinzipiell: Warum machst du sowas in C++/CLI!? Die Sprache ist dafür denkbar ungeeignet und du ziehst keinen Vorteil draus es nicht einfach in C# zu machen wo das alles sehr viel einfacher geht. Der Code da oben wird in der CLR laufen wie jeder .NET Code, d.h. es ist nicht so wie du vielleicht denkst dass du da irgendeinen Performancevorteil hättest nur weil deine Sprache ein C++ im Namen hat (C++/CLI ist nicht C++, nur um das klarzustellen). Abgesehen davon dass das bei so UI Geschichten sowieso eher keine Rolle spielt.



  • Hallo theta,

    du hast dich hier wohl verlesen: test ist hier ein UserControl (keine Form).

    Und auch hallo derLe0n,
    ich stimme @dot zu: C# ist hier um einiges besser geeignet!



  • Auja, stimmt - hatte wohl Tomaten auf den Augen. 😋

    Edit:
    Jetzt seh ich das Problem:
    in Form1 gibts ein Element testCtrl. Es ist vom Typ UserControl.
    UserControl hat aber KEIN Property (oder Element) mit Namen prolemNr. Denn problemNr ist ein Property von test!
    Also: Benutze test und nicht UserControl in Form1.

    ref class Form1 : public ...
    {
    private:
       //System::Windows::Forms::UserControl^ testCtrl;
       test^ testCtrl;
    };
    


  • ok vielen dank für die hilfe , theta 🙂
    und an die anderen beiden, ich benutze c code und kann nkeine wrapper - klassen erstellen 😉



  • [quote="theta"]

    Anmerkung:
    test::problem muss nicht (= darf in deinem Fall nicht!!) static sein!!! Warum machst Du das???

    weil ich die fehlermeldung bekomme , nur statische datennmember dürfen hier deklariert werden, und mit static klappt das zugreifen auf die Property auch 🙂



  • [quote="derLe0n"]

    theta schrieb:

    Anmerkung:
    test::problem muss nicht (= darf in deinem Fall nicht!!) static sein!!! Warum machst Du das???

    weil ich die fehlermeldung bekomme , nur statische datennmember dürfen hier deklariert werden, und mit static klappt das zugreifen auf die Property auch 🙂

    static macht hier aber kein Sinn und ist falsch.
    Initialisiere Member Variablen im Konstruktor!



  • [quote="theta"]

    derLe0n schrieb:

    theta schrieb:

    Anmerkung:
    test::problem muss nicht (= darf in deinem Fall nicht!!) static sein!!! Warum machst Du das???

    weil ich die fehlermeldung bekomme , nur statische datennmember dürfen hier deklariert werden, und mit static klappt das zugreifen auf die Property auch 🙂

    static macht hier aber kein Sinn und ist falsch.
    Initialisiere Member Variablen im Konstruktor!

    aber global kann ich trotzdem darauf zugreifen ??



  • Sofern Du eine Referenz auf das entsprechende Objekt hast: Ja.

    Mache Dir mal klar was es mit Klassen und Objekten von Klassen auf sich hat!



  • sag mir doch noch mal bitte schnell wie ich jetzt auf die Variable aus dem Konstruktor zugreife !! 🙂



  • ref class Form1 : public ...
    {
    public:
       Form1()
       {
          InitializeComponent();
    
          // Hier im Konstruktor deine Membervariablen initialisieren!
          myValue = 4711;
       }
    
    private:
       int myValue;
    
    public:
       property int MyValue
       {
          int get()
          {
             return myValue;
          }
    
          void set(int value)
          {
             myValue = value;
          }
       }
    };
    


  • ok , soweit alles geklärt 😃
    dankesehr :**



  • jetzt habe ich doch noch eine Frage : wie kann ich aus dem Steruelement auf einer Funktion der Form1.h zugreifen ??

    muss ich die Funktion als public und dann im steuerelement als extern definieren ??



  • Warum willst du auf eine Methode der Form zugreifen?



  • um mittels eines knopfes auf einem steuerelement eine funktion auf der hauptform aufzurufen... z.b. um einen Timer zu starten , der ein neues Steuerelement initialisiert 😉



  • Dafür verwendet man events.


Anmelden zum Antworten