【问题标题】:How to change ForeColor of SelectedItem in ListBox如何更改 ListBox 中 SelectedItem 的前景色
【发布时间】:2016-07-16 18:07:44
【问题描述】:

我在我的项目中遇到了一个小问题,如何更改 ListBox 中所选项目的文本的前景色。我可以选择ListBox的所有项目,但我不知道如何更改所选项目的文本前景色。

此代码在我的项目中用于选择列表框项

for (int i = 0; i < lbProductsToBuy.Items.Count; i++)
{
     lbProductsToBuy.SetSelected(i,true);
}
printreceiptToken1();
dataGridView67.Rows.Clear();

谢谢。在这些图像中,您可以看到我的应用程序的 UI。 image1image2。看到这最后一张图片,我想改变这个选定的项目前景色。

【问题讨论】:

  • 请帮忙;p我把你给我这个问题的最佳解决方案谢谢

标签: c# winforms listbox items


【解决方案1】:

您可以将ListBoxDrawMode属性设置为OwnerDrawFixed,然后处理控件的DrawItem事件并自己绘制项目:

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

【讨论】:

  • 1) 也许你忘了把ListBoxDrawMode 属性添加到OwnerDrawFixed 2) 也许你忘了附加listBox1_DrawItem您的ListBoxDrawItem 事件的方法
  • 对不起,你不明白我想要什么
  • 您正在寻找设置所选项目的前景色。你不是吗?该帖子使用黄色前景色显示所选项目。
  • 我希望当我单击按钮时,列表框前景色的所有现有项目都会更改,之后如果我在该列表框中添加新项目,以便项目前景色为黑色不会更改
  • 这是您完成这项工作的唯一方法,我很奇怪解决方案的哪一部分您无法理解。该帖子显然回答了您的问题。您需要选择所有项目,因此所有项目的颜色均为黄色。然后,如果您取消选择所有项目,所有项目都将显示为黑色。当您使用ListBox 时,使用自绘列表框是唯一的选择。否则你应该使用 ListView 或 DataGridView。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
相关资源
最近更新 更多