我用一个文本框制作了一个表单,它接受一个单词并搜索一堆句子以查看其中是否包含该单词。之后我必须出现这些句子并突出显示该单词。我的计划是制作一个 ListBox 并添加里面的句子。我的问题是如何突出显示这个词(通过改变我想的颜色)以便区分它。
有没有更好的方法?我选择了 ListBox,所以我可以选择我正在寻找的句子。
编辑
根据@Thorsten Dittmar 的指示,创建一个所有者绘制的列表框。
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);
}
}
我将如何拆分句子以便只画一个单词?
编辑2
我最终这样做的方式是制作两个单独的组件,以组合我的选择。一个是ListBox
所有句子都是彩色的,并且可以选择其中一个,另一个是RichBox
带有单独彩色单词的选项,因为使用 the 很难实现这一点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] + " ");
}
}