Hallo,

 

ich habe eine eigene ListBox-klasse entworfen, die mir es ermöglicht, den

selektierten Eintrag farblich darzustellen (Hintergrund, Schriftfarbe) wo

wie ich es möchte.

Ich möchte nun aber beim Verlassen der ListBox, wo praktisch die ListBox den

Focus verliert, erreichen, dass der soeben selektierte Eintrag wieder mit

weißem Hintergrund und schwarzer Schriftfarbe dargestellt wird.

 

Hier die Routine der ListBox-Klasse, welche es mir ermöglicht Hintergrund,

Schriftart usw. selbst zu definieren.

 

e.DrawBackground()

If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then

 e.Graphics.FillRectangle(System.Drawing.Brushes.LightGray, New

RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.X + 30, e.Bounds.Height))

        e.Graphics.DrawLine(System.Drawing.Pens.White, e.Bounds.X + 30,

e.Bounds.Y, e.Bounds.X + 30, e.Bounds.Y + Me.FontHeight + 2)

        e.Graphics.DrawString(DirectCast(sender,

MyListBox).Items(e.Index).ToString, myFont, System.Drawing.Brushes.Black,

New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))

        e.Graphics.DrawString(_HT.Item(DirectCast(sender,

MyListBox).Items(e.Index)).ToString, myFont, System.Drawing.Brushes.White,

New RectangleF(e.Bounds.X + 35, e.Bounds.Y, e.Bounds.Width - 35,

e.Bounds.Height))

Else

        e.Graphics.FillRectangle(System.Drawing.Brushes.White, e.Bounds)

        e.Graphics.DrawLine(System.Drawing.Pens.White, e.Bounds.X + 30,

e.Bounds.Y, e.Bounds.X + 30, e.Bounds.Y + Me.FontHeight + 2)

        e.Graphics.DrawString(DirectCast(sender,

MyListBox).Items(e.Index).ToString, myFont, System.Drawing.Brushes.Black,

New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))

        e.Graphics.DrawString(_HT.Item(DirectCast(sender,

MyListBox).Items(e.Index)).ToString, myFont, System.Drawing.Brushes.Black,

New RectangleF(e.Bounds.X + 35, e.Bounds.Y, e.Bounds.Width - 35,

e.Bounds.Height))

End If

 

Dank und Grüße

 

Oskar

 

Odpovedet emailem