Forums Neueste Beiträge
 

Ownerdraw ListView Detail-Modus

24/08/2008 - 22:23 von Tim | Report spam
Hallo Newsgroup,

ich schlage mich schon einige Tage mit dem selbstzeichnen von ListView's
herum und habe da anscheinend
ein paar Verstàndnisprobleme welche man hier hoffentlich aufklàren kann.

Also, soweit ich das Verstanden habe geht es für mich um die Funktionen
OnDrawItem und OnDrawSubItem.
Im DetailsView ist die erstere mehr oder weniger für die erste Spalte
zustàndig und die SubItem Funktion
für die darauf folgenden Spalten.
Ich habe also einen Codeschnipsel aus der MSDN Verwendet und in der
OnDrawItemFunktion folgendes
eingefügt:

using (LinearGradientBrush brush = new LinearGradientBrush(e.Bounds,
Color.Orange, Color.Maroon, LinearGradientMode.Horizontal))
{
e.Graphics.FillRectangle(brush, e.Bounds);
}

if ((e.State & ListViewItemStates.Selected) != 0)
{
// Draw the background and focus rectangle for a selected
item.
e.Graphics.FillRectangle(Brushes.Maroon, e.Item.Bounds);
e.DrawFocusRectangle();

}
e.DrawText(TextFormatFlags.EndEllipsis);


Die DrawSubItem Funktion macht lediglich einen DrawText.

Was ich nun erhalte entspricht erstmal dem was ich erwarte, einen
Farbverlauf im Hintergrund und Text in den verschiedenen Spalten der
ListView.
ABER wenn ich nun mit der Maus über die hinteren Spalten gehe (nicht klicke)
zeichnet sich anscheinend nur das Item und mit ihm der Hintergrund
neu. Der Text der Subitems ist nicht mehr sichtbar, da diese anscheinend in
diesem Moment nicht neu gezeichnet werden.
Klicke ich nun die einzelnen Items an (FullRowSelect) wird der Text wieder
sichtbar und bleibt dies auch wenn ich nochmals mit der Maus darüberfahre.
Muss das Zeichnen der Subitems durch mich manuell ausgelöst werden ?

Gruß
Tim
 

Lesen sie die antworten

#1 Tim
24/08/2008 - 22:26 | Warnen spam
Sorry für den Doppelpost.

"Tim" schrieb im Newsbeitrag
news:
Hallo Newsgroup,

ich schlage mich schon einige Tage mit dem selbstzeichnen von ListView's
herum und habe da anscheinend
ein paar Verstàndnisprobleme welche man hier hoffentlich aufklàren kann.

Also, soweit ich das Verstanden habe geht es für mich um die Funktionen
OnDrawItem und OnDrawSubItem.
Im DetailsView ist die erstere mehr oder weniger für die erste Spalte
zustàndig und die SubItem Funktion
für die darauf folgenden Spalten.
Ich habe also einen Codeschnipsel aus der MSDN Verwendet und in der
OnDrawItemFunktion folgendes
eingefügt:

using (LinearGradientBrush brush = new LinearGradientBrush(e.Bounds,
Color.Orange, Color.Maroon, LinearGradientMode.Horizontal))
{
e.Graphics.FillRectangle(brush, e.Bounds);
}

if ((e.State & ListViewItemStates.Selected) != 0)
{
// Draw the background and focus rectangle for a selected
item.
e.Graphics.FillRectangle(Brushes.Maroon, e.Item.Bounds);
e.DrawFocusRectangle();

}
e.DrawText(TextFormatFlags.EndEllipsis);


Die DrawSubItem Funktion macht lediglich einen DrawText.

Was ich nun erhalte entspricht erstmal dem was ich erwarte, einen
Farbverlauf im Hintergrund und Text in den verschiedenen Spalten der
ListView.
ABER wenn ich nun mit der Maus über die hinteren Spalten gehe (nicht
klicke) zeichnet sich anscheinend nur das Item und mit ihm der Hintergrund
neu. Der Text der Subitems ist nicht mehr sichtbar, da diese anscheinend
in diesem Moment nicht neu gezeichnet werden.
Klicke ich nun die einzelnen Items an (FullRowSelect) wird der Text wieder
sichtbar und bleibt dies auch wenn ich nochmals mit der Maus darüberfahre.
Muss das Zeichnen der Subitems durch mich manuell ausgelöst werden ?

Gruß
Tim



Ähnliche fragen