#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: Добро пожаловать 🙂 Рад помочь вам.