我在项目中遇到一个小问题如何在ListBox
中更改所选项目的文本的前色。我可以选择ListBox
的所有项目,但我不知道如何更改所选项目文本的前色。
此代码在我的项目中用于选择列表框项目
for (int i = 0; i < lbProductsToBuy.Items.Count; i++)
{
lbProductsToBuy.SetSelected(i,true);
}
printreceiptToken1();
dataGridView67.Rows.Clear();
感谢。在这些图像中,您可以看到我的应用程序的UI。 image1和image2。看到最后一张图片,我想改变这个选定的颜色。
答案 0 :(得分:3)
您可以将ListBox
的{{3}}属性设置为OwnerDrawFixed
,然后对控件进行DrawMode
事件并自行绘制项目:
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
var listBox = sender as ListBox;
var backColor = this.BackColor; /*Default BackColor*/
var textColor = this.ForeColor; /*Default ForeColor*/
var txt = listBox.GetItemText(listBox.Items[e.Index]);
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
backColor = Color.RoyalBlue; /*Seletion BackColor*/
textColor = Color.Yellow; /*Seletion ForeColor*/
}
using (var brush = new SolidBrush(backColor))
e.Graphics.FillRectangle(brush, e.Bounds);
TextRenderer.DrawText(e.Graphics, txt, listBox.Font, e.Bounds, textColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Left);
}