検索しても解決策を見つけることができなかったので、固有の問題がある可能性があると思います。基本的に、私は妻のためにc#.NETで遺伝子検索/作成アプリケーションを作成しており、RichTextBoxesを使用して、必要な情報を強調表示、色付け、エクスポートなどできるようにしています。Microsoft の RichTextBoxes は想像力に委ねられているので、いくつかのカスタム メソッドを作成しました。
とにかく、ここに私の問題があります。ハードリターン全体で用語を検索できる必要があります。ユーザーは 60 文字間隔の文字列を持っており、そのハード リターン バリアを越える可能性のあるアイテムを検索する必要があります。たとえば、2 行あるとします (簡単にするために短くします): AAATTTCCCGGG TTTCCCGGGAAA
ユーザーが GGGTTT の検索を実行した場合、改行/ハード リターンがあっても結果を取得できる必要があります。私の人生では、これを行う良い方法を考えることはできず、それでもRichTextBoxで結果を選択します。私はいつでも結果を見つけることができますが、RichTextBox の適切なインデックスを取得することはできません。
必要に応じて、richTextBox.SaveFile() と LoadFile() に反対し、手動で rtf テキストを文字列として解析することには反対しません。きれいである必要はありません。この場合は、機能する必要があります。
あなたが与えるかもしれない助け/指導に感謝します。
関連するスニペットは次のとおりです。
//textbox 2 search area (examination area)
private void button5_Click(object sender, EventArgs e)
{
textBox3.Text = textBox3.Text.ToUpper();
if (textBox3.Text.Length > 0)
{
List<string> lines = richTextBox2.Lines.ToList();
string allText = "";
foreach (string line in lines)
allText = allText + line.Replace("\r", "").Replace("\n", "");
if (findMultiLineRTB2(allText, textBox3.Text) != -1)
{
richTextBox2.Select(lastMatchForRTB2, textBox3.Text.Length);
richTextBox2.SelectionColor = System.Drawing.Color.White;
richTextBox2.SelectionBackColor = System.Drawing.Color.Blue;
}//end if
else
MessageBox.Show("Reached the end of the sequence", "Finished Searching");
}//end if
}//end method
private int findMultiLineRTB2(string rtbText, string searchString)
{
lastMatchForRTB2 = rtbText.IndexOf(searchString, lastMatchForRTB2 + 1);
return lastMatchForRTB2;
}