Ändra färg på rad/item i en listbox
Hej!
Har suttit o sökt några timmar nu efter hur man lägger till en bakgrundsfärg på en rad/item i en Listbox. Är det någon som har ett förslag?
Jag har hittat DrawItem eventet, men vill inte att det ska startas av sig själv. Hur anropar jag det manuellt i koden? Finns det ett annat bättre sätt att göra det på? Allra helst skulle jag vilja göra det när jag addar itemet till listboxen.
Tacksam för hjälp!
//Johanna
Svara
Sv: Ändra färg på rad/item i en listbox
När skall detta ske? Vid vid val av item i ListBox eller?
I alla fall, här finns lite om DrawItem;
http://www.csharping.com/CommentView,guid,0c91383d-b201-4e51-b0bc-f3bc35ecd5ff.aspx
Om det inte är den du redan har kolla på. :)
Svara
Sv:Ändra färg på rad/item i en listbox
Jag lägger till items till listboxen i en for loop, med i(t ex) som räknare. När i är ett visst värde så vill jag när jag lägger till itemet också sätta färg på bakgrunden för just det itemet.
Jag har hittat nåt liknande men eftersom jag inte vill att den ska gå igång automatiskt så vill jag ju anropa listbox_DrawItem själv. Funkar det? Hur anropar jag den? listbox_DrawItem(?,?)...
Svara
Sv: Ändra färg på rad/item i en listbox
Någotsådant.. dock att du måste få den listitem's index du vill måla på något sätt..
Men då har du lite att leka med i alla fall...
<code>private void ListBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
// Rita bakgrund för varje listitem.
e.DrawBackground();
// Sätt en default färg för listitem. ex. svart eller något.
Brush myBrush = Brushes.Black;
// måla den listitem med index = YourIndex, i ex. rödfärg.
if(e.Index == YourIndex)
{
// färg.
myBrush = Brushes.Red;
}
// rita nuvarande listitem text baserad på nuvarande font.
// och de valda färgerna.
e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
// Om Listboxen har en focus, rita en fokus rektangel.
e.DrawFocusRectangle();
}
</code>
Svara