как изменить цвет элемента списка c # на основе его индекса

#c# #forms

#c# #формы

Вопрос:

Я хочу изменить цвет элемента списка на основе его индекса. У меня есть текстовое поле … и когда пользователь вводит номер индекса, я хочу изменить цвет текста соответствующего индекса в списке

например: когда пользователь нажимает кнопку, происходит нечто подобное:

     private void button1_Click(object sender, EventArgs e)
            {
                setcolor(int.Parse(textBox1.Text));
            }
 

и я хочу создать такую функцию setcolor.
Listview для меня не вариант.

Комментарии:

1. можете ли вы показать нам свой код?

2. Проверьте мой ответ ниже.

Ответ №1:

Вам необходимо обработать DrawItem событие ListBox , чтобы нарисовать элементы с указанным color

Примечание: здесь, в приведенном ниже коде, я меняю цвет элемента списка с помощью Green

Попробуйте это:

 int itemIndex = -1;
public Form1()
{
  InitializeComponent();
  this.listBox1.DrawItem  = new            
          System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);
}

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    e.DrawBackground();
    Graphics g = e.Graphics;
    if(e.Index == itemIndex )
    {
        g.FillRectangle(new SolidBrush(Color.Green), e.Bounds);
    }
    else
    {
        g.FillRectangle(new SolidBrush(Color.White), e.Bounds);
    }
    ListBox lb = (ListBox)sender;
    g.DrawString(listBox1.Items[e.Index].ToString(), e.Font,
          new SolidBrush(Color.Black), new PointF(e.Bounds.X, e.Bounds.Y));
    e.DrawFocusRectangle();
}

private void button1_Click(object sender, EventArgs e)
{
    setcolor(int.Parse(textBox1.Text));
}

void setcolor(int index)
{ 
    itemIndex = index;
    listBox1.DrawMode = DrawMode.Normal;
    listBox1.DrawMode = DrawMode.OwnerDrawFixed;
}
 

Комментарии:

1. Извините… теперь все элементы выделены зеленым цветом!

2. @user3759960: можете ли вы опубликовать свой код?, потому что приведенный выше код отлично работает для меня.

3. @user3759960: Добро пожаловать 🙂 Рад помочь вам.