В этой статье рассказывается, как использовать DrawItem ListBox с DrawMode, установленным в одно из значений OwnerDraw. По сути, вы делаете что-то вроде этого:
listBox1.DrawMode = OwnerDrawFixed;
listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
// TODO: Split listBox1.Items[e.Index].ToString() and then draw each separately in a different color
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(),new Font(FontFamily.GenericSansSerif, 14, FontStyle.Bold),new SolidBrush(color[e.Index]),e.Bounds);
}
Вместо одного вызова DrawString, разделите listBox1.Items [e.Index] .ToString () на слова и сделайте отдельный вызов DrawString для каждого слова. Для каждого слова вам придется заменить e.bounds положением x, y или ограничительным прямоугольником.
Тот же подход должен работать для ListView .