Hy
Ich habe einen eigenen ListView, das oben genannte Problem tritt auf. Siehe Bild:
Mein Code:
private void ListViewEx_DrawItem(object sender, DrawListViewItemEventArgs e)
{
e.Graphics.Clip = new Region(e.Item.Bounds);
if (this.View != View.Details)
drawOffset = 0;
if (e.Item.Checked)
{
RectangleF bounds = new RectangleF(e.Item.Bounds.X + drawOffset, e.Item.Bounds.Y,
e.Item.Bounds.Width - drawOffset, e.Item.Bounds.Height);
//we don't draw the whole rectangle, we draw with 1px offset from each edge
bounds = new RectangleF(bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2);
switch (drawMode)
{
case ItemDrawMode.FillSolid:
e.Graphics.FillRectangle(new SolidBrush(backColorChecked), bounds);
break;
case ItemDrawMode.FillLinearGradientVertical:
lgBrush = new LinearGradientBrush(bounds, backColorChecked, BackColor, LinearGradientMode.Vertical);
e.Graphics.FillRectangle(lgBrush, bounds);
break;
}
}
else
e.Graphics.FillRectangle(new SolidBrush(BackColor), e.Item.Bounds);
if ((e.State & ListViewItemStates.Selected) != 0)
{
RectangleF bounds = new RectangleF(e.Item.Bounds.X + drawOffset, e.Item.Bounds.Y,
e.Item.Bounds.Width - drawOffset, e.Item.Bounds.Height);
//we don't draw the whole rectangle, we draw with 1px offset from each edge
bounds = new RectangleF(bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2);
switch (drawMode)
{
case ItemDrawMode.FillSolid:
e.Graphics.FillRectangle(new SolidBrush(backColorSelected), bounds);
break;
case ItemDrawMode.FillLinearGradientVertical:
lgBrush = new LinearGradientBrush(bounds, backColorSelected, BackColor, LinearGradientMode.Vertical);
e.Graphics.FillRectangle(lgBrush, bounds);
break;
}
}
if (this.View != View.Details)
{
e.DrawText();
}
}
Hallo sbertl000,
also ich sehe aus dem Bild nicht, was falsch ist und wie es richtig sein sollte. Kannst du einen IST-SOLL-Screenshot machen oder es zumindest genauer beschreiben?
herbivore
Also in der zweiten Zeile links auf der Oberseite siehst du eine Kante, dort wo der Verlauf beginnt.
sbertl