• De afgelopen dagen zijn er meerdere fora waarop bestaande accounts worden overgenomen door spammers. De gebruikersnamen en wachtwoorden zijn via een hack of een lek via andere sites buitgemaakt. Via have i been pwned? kan je controleren of jouw gegeven ook zijn buitgemaakt. Wijzig bij twijfel jouw wachtwoord of schakel de twee-staps-verificatie in.

C# Visual Studio 2015 : regel in listbox in een kleur zetten

Status
Niet open voor verdere reacties.

Delftje

Nieuw lid
Lid geworden
11 mei 2016
Berichten
27
Waarderingsscore
0
Hallo,

is er iemand die weet hoe ik n bepaalde regel in een listbox in een kleur kan zetten, van zodra mijn listbox opgevuld wordt?

Ik kan enkel alle regels in een kleur zetten =>listboxWaarden.Background=Brushes.Red;

Of enkel een geselecteerde item in een kleur zetten => ListBoxItem lbi = new ListBoxItem();
lbi.Content = listboxWaarden.SelectedItem;
lbi.Background = Brushes.Red;
listboxWaarden.Items.Insert(listboxwaarden.SelectedIndex, lbi);

Alvast bedankt!
 
Het kan, maar het is niet zo evident.

Je moet dan de listbox zelf tekenen: (source : bron)

voorbeeldje:
namespace toevoegen (bovenaan code)
Code:
using System.Drawing;


Code:
   private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.DrawMode = DrawMode.OwnerDrawFixed;
            listBox1.DrawItem += listBox_DrawItem;

            listBox1.Items.Add("test");
            listBox1.Items.Add("test2");
            listBox1.Items.Add("drie");
            listBox1.Items.Add("vier");
            listBox1.Items.Add("test5");
        }

        private void listBox_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.DrawBackground();
            Graphics g = e.Graphics;
            ListBox lb = (ListBox)sender;
 //Afhankelijk van de inhoud van de tekst bepaal ik welke kleur er op de achtergrond komt hier kan je zelf kiezen wat je doet natuurlijk
            if (lb.Items[e.Index].ToString().Contains("test"))
            {
                g.FillRectangle(new SolidBrush(Color.White), e.Bounds);
                g.DrawString(lb.Items[e.Index].ToString(), e.Font, new SolidBrush(Color.Black), new PointF(e.Bounds.X, e.Bounds.Y));
            }
            else
            {
                g.FillRectangle(new SolidBrush(Color.Black), e.Bounds);
                g.DrawString(lb.Items[e.Index].ToString(), e.Font, new SolidBrush(Color.White), new PointF(e.Bounds.X, e.Bounds.Y));
            }
            e.DrawFocusRectangle();
        }

Wat ze ook voorstellen in dit topic is om een ListView te gebruiken i.p.v een ListBox.
Maar hierbij heb je het probleem dat enkel de kleur op de achtergrond komt van de tekst. Wat waarschijnlijk ook niet de bedoeling is:

Code:
    private void Form1_Load(object sender, EventArgs e)
        {
            ListViewItem item1 = new ListViewItem("test");
            item1.BackColor = Color.Black;
            item1.ForeColor = Color.White;

            ListViewItem item2 = new ListViewItem("test2");
            item2.BackColor = Color.Black;
            item2.ForeColor = Color.White;

            ListViewItem item3 = new ListViewItem("drie");
            item3.BackColor = Color.White;
            item3.ForeColor = Color.Black;

            ListViewItem item4 = new ListViewItem("vier");
            item4.BackColor = Color.White;
            item4.ForeColor = Color.Black;

            listView1.View = View.List;

            listView1.Items.Add(item1);
            listView1.Items.Add(item2);
            listView1.Items.Add(item3);
            listView1.Items.Add(item4);
        }
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan