日期:2014-05-17  浏览次数:20835 次

Listbox如何执行完一行执行下一行并改变当前正在执行item的颜色
比如我有个listbox,这里面有
1111
2222
3333
4444

4个item,然后我在画一个textbox控件,一个按钮,我点击按钮启动后,首先读到的是1111,在textbox显示的也是1111,并且1111那一行变成红色,然后执行完1111后,继续读到2222...以此类推。

希望各位帮帮忙,我大概知道应该是个循环,for i:=0 to listbox1.count-1 do 再往后我就有点迷糊了,初学C#,实在弄不懂。。

------解决方案--------------------
楼主,winform的listbox,设置文本颜色是只能设置全部的
------解决方案--------------------
使用listview或者datagridview等类似但是功能更全的控件。
------解决方案--------------------
用richtextbox吧。

private void button1_Click(object sender, EventArgs e)
        {
            var str = "123"+"\n";
            richTextBox1.Select(0, richTextBox1.Text.Length);
            richTextBox1.SelectionColor = Color.Black;
            richTextBox1.AppendText(str);
            richTextBox1.Select(richTextBox1.Text.Length - str.Length, richTextBox1.Text.Length);
            richTextBox1.SelectionColor = Color.Red;
        }

------解决方案--------------------
ListBox是可以改单个项的颜色的。。。





listBox设置选项颜色
加载时设置this.listBox1.DrawMode=
 System.Windows.Forms.DrawMode.OwnerDrawFixed;

  private void listBox1_DrawItem(object sender, DrawItemEventArgs e)

        {

            string s = this.listBox1.Items[e.Index].ToString();

            if (s.Contains("初始化成功"))

            {

                e.Graphics.DrawString(s, this.Font, Brushes.Green, e.Bounds);

            }

            else if (s.Contains("初始化失败"))

            {

                e.Graphics.DrawString(s, this.Font, Brushes.Red, e.Bounds);

            }

            else

                e.Graphics.DrawString(s, this.Font, new SolidBrush(this.ForeColor), e.Bounds);

        }