在C# winFrom 下解决 listbox 或其它控件解决数据逐行显示 并分颜色的问题。

现在有一个winFrom界面上面有一个listbox(或listView或其它只要能解决问题),和一个button控件,我每单击一次写入一个字符串这个字符串我拿去处理后得... 现在有一个winFrom 界面 上面有一个listbox(或listView 或其它只要能解决问题),和一个button控件,我每单击一次写入一个字符串 这个字符串我拿去处理后得到 Y/N 如果在Y就在后面打一个 绿色的 Y 如果是N 就在后面 打一个红色的N(或整行改为红色) 再换行进行下一行处理。界面里不够显示了,右边显示滚动条。超过200条数据后自动删除前面的数据。
因为初学C# 最好能有完整的代码。
展开
 我来答
道南兔
2011-03-03 · 超过17用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:39.3万
展开全部
在窗体上加一个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;
}
}
}
百度网友6a4209912
2011-03-03 · 超过25用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:68.6万
展开全部
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 左边一些位置就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tqqlyl
2011-03-03
知道答主
回答量:81
采纳率:0%
帮助的人:18万
展开全部
不太明白
追问
我主要就是一个显示窗口的出现 内容是这样的

1111  OK(绿色)
2222 NO(红色)
2411 OK(绿色)
一个个写上去 写的时候要分一下色 在label里写上去是很好实现的 可不能分色 哦还要个滚动条。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式