DataGridView Cells hinzufügen Problem



  • Hi,
    ich programmiere derzeit an einem selbst gebauten DataGridView (also er erbt von DataGridView).
    Habe dazu alle nötigen Klassen abgeleitet und (ziemlich vollständig) implementiert.
    Nun habe ich allerdings ein Problem: beim Hinzufügen von Datensätzen will ich in der jeweiligen Row auf die einzelnen Zellen zugreifen, um für diese Werte zu vergeben. Allerdings erhalte ich jedes Mal, wenn ich auf z.b.:

    aktuell.Cells[0].Value = o.ToString();
    

    diese Zuweisung durchführen möchte, eine System.ArgumentOutOfRangeException. Woher diese kommt weiß ich nicht. Kann man für die einzelnen Zellen einer Row jeweils einen Wertebereich vorgeben?
    Anfangs dachte ich vielleicht, es liegt am Element, auf welches zugegriffen wird und, dass vielleicht der Index zu weit läuft, allerdings ist der aktuell.Cells.Count immer größer, als der Index, auf den ich bislang versucht habe, zuzugreifen. Lesend kann ich im übrigen auch nicht auf Value zugreifen, dabei erhalte ich eine System.ArgumentOutOfRangeException. Weiß zufällig jemand bescheid darüber?
    Ich bin leider irgendwie am Ende 😞



  • Hi,

    Lesend kann ich im übrigen auch nicht auf Value zugreifen

    Das ist imho dann der Fall wenn Value kein Wert zugewiesen wurde.

    Erscheint die Zelle denn im Grid? Hast du mal mittels debugger den übergebenen Wert überprüft? Das property für Value musstest du sicherlich überschreiben, oder? Liegt da vlt der Fehler?



  • ich kann die Property eben nicht beschreiben wegen dem oben beschriebenen Fehler, aber dabei weiß ich wiederum nicht, wo der her kommt so...
    Theoretisch müsste ich doch auf

    for(int i = 0; i < aktuell.Cells.Count; ++i)
    {
       aktuell.Cells[i].Value = "servas";
    }
    

    draufkommen können, aber hierbei gibt es jeweils eine System.ArgumentOutOfRangeException...
    Wie ich oben beschrieben habe.
    Bin derzeit ein wenig ratlos, weil ich davon ausgehe, dass wenn die Cells 2 als Wert für Count besitzen, dass dann auch 0 und 1 beschreibbar sind.
    btw
    mit

    foreach(DataGridViewTextBoxCell cell in aktuell.Cells)
    {
      cell.Value = "servas";
    }
    

    funktioniert das ganze auch nicht



  • Poste doch mal etwas mehr Code. Interessant könnte evtl sein, wo und wie du dir "aktuell" holst.



  • Hmm, is ne ziemlich verschachtelte Struktur, also aktuell wird mit new angelegt, anschließend in das Grid eingehangen (bzw in eine Liste, die zum Einfügen der einzelnen Elemente in das Grid dient) und dann soll aktuell eben mit Werten befüllt werden, um diese in der Paint-Methode der jeweiligen Zelle, diese zu zeichnen.
    Hat soweit eigentlich alles gepasst, weiß auch nicht genau, wo der Fehler lag, habs mir nur noch mal genauer angesehen, aber geht jetzt. Ich denke, das Problem lag darin, dass ich es länger nicht mehr kompiliert hatte (also vom System her, habe ich die Komponente in einer dll liegen und diese war im benutzenden Form nicht aktuell). Jetzt geht es, nachdem ich die dll neu referenziert habe.
    Aber trotzdem danke so weit


Anmelden zum Antworten