単語を受け入れる TextBox を使用してフォームを作成し、一連の文を検索して、その単語が含まれているかどうかを確認します。その後、それらの文を表示して単語を強調表示する必要があります。私の計画は、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);
}
}
1 つの単語だけを描くために文を分割するにはどうすればよいですか?
編集2
私が最終的に行った方法は、2 つの別個のコンポーネントを作成して、オプションを組み合わせることでした。1つはListBox
すべての文に色が付けられており、そのうちの1つを選択するオプションと、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] + " ");
}
}