Как мне изменить цвет слова внутри списка
Я создал форму с TextBox, которая принимает слово и ищет в нем несколько предложений, чтобы увидеть, содержит ли это слово какое-либо из них. После этого мне нужно отобразить эти предложения и выделить слово. Мой план - создать ListBox и добавить предложения внутри него. Моя проблема в том, как выделить слово (я полагаю, изменив цвет), чтобы его можно было различить.
Есть ли предпочтительный способ? Я выбрал ListBox, чтобы выбрать искомое предложение.
Edit
В соответствии с инструкциями @Thorsten Dittmar a создайте нарисованный владельцем список.
public partial class Form1 : Form
{
private List<string> _items;
public Form1()
{
InitializeComponent();
_items = new List<string>();
_items.Add("One");
_items.Add("Two");
_items.Add("Three");
listBox1.DataSource = _items;
}
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
e.Graphics.DrawString(_items[e.Index],
new Font(FontFamily.GenericSansSerif,
8, FontStyle.Bold),
new SolidBrush(Color.Red), e.Bounds);
}
}
Как я собираюсь разбить предложение, чтобы нарисовать только одно слово?
Edit2
В итоге я сделал два отдельных компонента, чтобы объединить мои параметры.
Один былListBox
со всеми цветными предложениями и возможностью выбрать одно
из тех, а другойRichBox
с отдельными цветными словами, так как это трудно
достичь этого сListBox
(для меня минимум).
Я достиг этого, используя логический массив, указывающий, какое слово должно быть цветным в каждом предложении.
for (int i = 0; i < words.Length; i++)
{
if (segments[i]) //<-boolean array
{
rich.SelectionColor = Color.Red;
rich.AppendText(words[i] + " ");
rich.SelectionColor = Color.Black;
}
else
{
rich.AppendText(words[i] + " ");
}
}