如何根据列表框的索引改变列表框的颜色

本文关键字:列表 改变 颜色 索引 何根 | 更新日期: 2023-09-27 18:09:50

我想根据它的索引改变ListBox项目的颜色。我有一个文本框…当用户输入索引号时,我想改变列表框

中相应索引的文本颜色当用户点击一个按钮时,会发生这样的事情:
    private void button1_Click(object sender, EventArgs e)
            {
                setcolor(int.Parse(textBox1.Text));
            }

和我想创建这样的setcolor函数。Listview不适合我。

如何根据列表框的索引改变列表框的颜色

您需要处理ListBoxDrawItem事件来绘制指定color的项目

注意:在下面的代码中,我正在用Green

改变ListBox项目的颜色

试试这个:

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;
}