Probleme mit einer GroupBox und einer List<T> in VS 2010 (Visual C++)



  • Hallo und guten Abend allesamt.

    Bin neu in diesem Forum.

    Ich habe eine Windows Forms Anwendung erstellt.

    Auf einem Formular habe ich eine GroupBox mit dem Namen "grbRundenzeiten".
    In dieser GroupBox werden zur Laufzeit UserControls hinzugefügt.

    Stellt sich wie folgt dar:

    mycontrol->Name = "mycontrol" + count.ToString();// Name wird dynamisch vergeben
    mycontrol->Location = Point(x, y);              // Position wird gesetzt
    mycontrol->lblLap->Text = "Probelauf";          // Text wird gesetzt
    y = y + controlabstand;                         // y Positionj wird erhöht
    this->grbRundenzeiten->Controls->Add(mycontrol);//usercontrol der GrougBox hinzugefügt
    

    Beim Löschen dieser Controls aus der GroupBox gehe ich wie folgt vor:

    // Wird bei jedem Aufruf neu durchlaufen
    List<Laptime::LaptimeControl^>^ controllist = gcnew List<Laptime::LaptimeControl^>();
    
    int anz = grbRundenzeiten->Controls->Count;
    int i = 1;
    
    for each(Laptime::LaptimeControl^ usercontrol in grbRundenzeiten->Controls)
    	{
    		controllist->Add(usercontrol);
    		i++;
    	}
    	if(anz > 0 && anz <= 6)
    	{
    
    		grbRundenzeiten->Controls->Remove(controllist[anz]);// wird immer nur das Letzte Element gelöscht
    		count--;
    
    	}
    

    Ich bekomme einen Ausnahmefehler "System.ArgumentOutOfRangeException
    Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein."

    Mir ist aufgefallen, dass die GroupBox nach der Initialisierung unter "GroupBox.Controls.Items" Fehler anzeigt. "Nicht definierter Wert"
    bei lastAccessedIndex steht der Wert -1.
    Ich denke dass es was damit zu tun hat.

    Die eigentliche Frage!

    Muss ich bei dem Hinzufügen der Usercontrols in der GroupBox einen Index setzten?
    Ich denke, dass der Fehler sich eventuell in meine typisierte Liste mitzieht oder?

    Das Hinzufügen klappt problemlos.
    Sobald ich löschen/entfernen möchte, kommt der Fehler.

    Jemand eine Idee, was der Fehler sein könnte?

    Wahrscheinlich wieder einmal ein dummer Gedankenfehler.
    Dankbar für jede Hilfe.



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Habe den Fehler gefunden! :p :p

    if(anz > 0 && anz <= 6)  
    {
    anz--;
    grbRundenzeiten->Controls->Remove(controllist[anz]);
    count--;
    }
    

    Die Variable "anz" bekommt den Wert der anzahl der usercontrols.
    Also ist "anz" immer um 1 größer gewesen als der Index den ich versuchte anzusprechen. Lösung = "anz" wieder um 1 verkleinern.

    Sagte doch, dass es ein dummer logischer Fehler ist.

    Trotz allem Danke und schönen Abend noch! :xmas1:


Anmelden zum Antworten