2009-07-16 9 views
2

Ich verwende einen DataGridView mit einem DataTable als einen Stapel für einige Werte. Etwas wird in die DataTable Reihen aufgenommen und dann sende ich sie irgendwo in einer FIFO Weise - es wäre sehr nett, die Reihen in einer unteren-> herauf (um sie zu stapeln) Richtung anstatt einer up-> down Richtung zu zeichnen.Wie zeichne ich Zeilen am unteren Rand des DataGridView?

Wie kann ich das erreichen, da die Paint-Events nur zum Malen von Zellen/Einzelzeilen nützlich sind?

+0

Gibt es Spaltenüberschriften? Wo sollten sie sein? – xyz

+0

Ich würde sie an der Spitze behalten. –

Antwort

0

Schreiben Sie einen benutzerdefinierten Stapel, der ein Dummy-Objekt für leere Steckplätze im Stapel verwendet. Das Dummy-Objekt kann ein statisches Objekt mit leeren Eigenschaften sein. Wenn Sie den Stapel füllen, entfernen Sie das Dummy-Objekt und fügen Sie dort Ihr neues Objekt hinzu. Verwenden Sie dann diesen Stapel als Bindungsquelle. Die Dummy-Objekte am Ende des Stapels stellen sicher, dass die ersten/obersten Zeilen in den DataGridView-Zellen leer sind. Auf diese Weise müssen Sie das DataGridView-Verhalten nicht ändern.

+0

Dies war die beste (und am wenigsten komplizierte) Annäherung an das Verhalten, das ich wollte. –

0

Es tut mir leid, ich war ein wenig unklar (ich war nicht sicher, ob es unten-alligned oder unten angedockt oder was auch immer, so dass ich diesen Teil weggelassen).

Aber trotzdem habe ich es herausgefunden. Es scheint, dass die CellPainting Ereignis an die Zellgrenzen eingeschränkt isnt, so dass Sie einfach die Zelle umgebende Rechteck bewegen kann, wie folgt aus:

Rectangle^ newRect = gcnew Rectangle(
    e->CellBounds.X, 
    DataGridView->Bounds.Bottom-e->CellBounds.Y, // this is the moving part 
    e->CellBounds.Width, 
    e->CellBounds.Height 
); 

Es gibt einige kleinere Änderungen in Betracht gezogen werden (wenn der unteren Bildlaufleiste sichtbar ist, die DataGridView Grenzen), aber der Code fängt den Punkt ein.

aus der Ferne auf das Problem der Suche sicher funktioniert der Trick;)

Edit: Ja in der Tat, dies zieht die Zellen anstößt, aber es macht auch einige flippige Effekte auf vertikale/horizontale Scrollen und Fenster Fokusänderung . Und ja, keine Header-Zellen. Zurück zum Zeichenbrett.

+0

Ich erwarte nicht, dass dies funktioniert. Hast du es mit einer vertikalen Bildlaufleiste versucht? (Unter vielen anderen Einwänden). –

+0

Ja - beide sind sichtbar - vertikal und horizontal. Das lustige daran ist, dass ein benutzerdefiniertes Zellfarbenereignis problemlos funktioniert, wenn Sie die ursprüngliche Ausrichtung beibehalten. –

Verwandte Themen