在窗体上加一个textBox1, 一个button1, 一个listView1。
textBox1接收输入的字符串,button1把textBox1中的字符串,处理以后,加到listView1中。
下面是具体代码。
另外,显示200行,有点太多。不如显示10行来试试。
public int nA = 0; //初始化函数前,定义一个整数变量。为控制listView中的字符串行数
public sExFrm1() //初始化函数
{
InitializeComponent();
//下面是对listView1的设置。
this.listView1.View = View.Details;
this.listView1.HeaderStyle = ColumnHeaderStyle.None;
this.listView1.FullRowSelect = true;
this.listView1.Columns.Add("");
this.listView1.Columns[0].Width = this.listView1.Width - 24;
this.listView1.Scrollable = true;
}
private void button1_Click(object sender, EventArgs e)
{
string strA = "";
if(nA<10)
{
strA = textBox1.Text.Trim(); //接收textBox1中的字符串
if (strA.IndexOf("11") == -1) //如果字符串中不含有“11”
{
strA += " NO"; //字符串后加“ NO”,
listView1.Items.Add(strA); //加到listView1中
listView1.Items[nA].ForeColor = Color.Green; //将新加的这一行字体变成绿色。
nA += 1; //行数加“1”
}
else //反之,有“11”.
{
strA += " OK"; //字符串后加“ OK”
listView1.Items.Add(strA); //加到listView1中
listView1.Items[nA].ForeColor = Color.Red; //将新加的这一行字体变成红色。
nA += 1;
}
}
else
{
listView1.Items[0].Remove();
strA = textBox1.Text.Trim();
if (strA.IndexOf("11") == -1)
{
strA += " NO";
listBox1.Items.Add(strA);
listView1.Items.Add(strA);
listView1.Items[9].ForeColor = Color.Green;
nA += 1;
}
else
{
strA += " OK";
listBox1.Items.Add(strA);
listView1.Items.Add(strA);
listView1.Items[9].ForeColor = Color.Red;
nA += 1;
}
}
}
listBox 的 DrawMode 设置为 OwnerDrawFixed
在 DrawItem 事件底下进行自绘操作。
private void listBox_Item_DrawItem(object sender, DrawItemEventArgs e)
{
Color bgcolor, bdcolor;
string sz_bookName = "『" + ((BookFavorite.BookFavoriteItem)this.Favorite.ListFavorite[e.Index]).BookName + "』";
Rectangle rect = new Rectangle(e.Bounds.X+2, e.Bounds.Y, e.Bounds.Width-5, e.Bounds.Height-4);
if (e.State.HasFlag(DrawItemState.Selected))
{
bgcolor = m_item_bgcolor_selected;
bdcolor = m_item_bdcolor_selected;
}
else
{
bgcolor = m_item_bgcolor_normal;
bdcolor = m_item_bdcolor_normal;
}
GraphicsUtil.FillRoundRect(e.Graphics, bgcolor, rect, 0, 10);
GraphicsUtil.DrawRoundRect(e.Graphics, bdcolor, rect, 10);
rect.Y += 10;
e.Graphics.DrawString(listBox_Item.Items[e.Index].ToString(), e.Font, new SolidBrush(Color.Black), rect);
e.Graphics.DrawString(sz_bookName, e.Font, new SolidBrush(Color.Blue), rect);
rect.X -= 1;
e.Graphics.DrawString(sz_bookName, e.Font, new SolidBrush(Color.Blue), rect);
}
下面这个语句是绘制文本的,你可以根据情况设置 rect 区域来确定绘制位置。
e.Graphics.DrawString(listBox_Item.Items[e.Index].ToString(), e.Font, new SolidBrush(Color.Black), rect);
当然还有
DrawFocus 这些需要你自己绘制焦点等的,你可以从网上查相关资料。要画图片的话,你只需要new Image 之后通过 Graphics 绘制在画文本的 rect 左边一些位置就行了。
不太明白