2016-06-21 5 views
0

テキストボックス1に入力すると、たとえばForm1 と入力すると、結果が多く表示され、黄色で強調表示されます。richTextBoxテキストで、単一の単語/文字列ではなく、テキストを検索するにはどうすればよいですか?

しかし、私は、textBox1テキストボックスに例えばいくつかのテキストだけでなく、Form1をペーストをコピーします。

if ((null != _FileProcessingWorker) && (_FileProcessingWorker.IsBusy)) 
{ 
    _FileProcessingWorker.CancelAsync(); 
} 

そして、それは黄色で、それを色付けしません。何らかの理由で、単一の単語/文字列に対してのみ機能しますが、テキストブロックでは機能しません。

void lvnf_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (ListViewCostumControl.lvnf.SelectedItems.Count > 0) 
    { 
     richTextBox1.Text = File.ReadAllText(
      ListViewCostumControl.lvnf.Items[ 
       ListViewCostumControl.lvnf.SelectedIndices[0] 
      ].Text); 

     int start = richTextBox1.SelectionStart; 
     int startIndex = 0; 
     int index = 0; 
     string word = textBox1.Text; 
     Color selectionColor = richTextBox1.SelectionColor; 

     while ((index = richTextBox1.Text.IndexOf(word, startIndex)) != -1) 
     { 
      richTextBox1.Select(index, word.Length); 
      richTextBox1.SelectionColor = Color.Yellow; 
      startIndex = index + word.Length; 
     } 

     richTextBox1.SelectionStart = start; 
     richTextBox1.SelectionLength = 0; 
     richTextBox1.SelectionColor = selectionColor; 
    } 
} 

答えて

3

問題は、RichTextBoxの機能に起因しています。テキストがコントロールに読み込まれると、改行改行改行( "\ r \ n")の組み合わせが改行に変換されます。しかし、テキストボックスは行末をそのまま残します。

text inspection

簡単

ライン1
のTextBoxとRichtTextBoxの両方でライン2

、その後は、そのテキストのプロパティを検査コピーしていることを確認することができます

最も簡単な解決策は、 "\ r \ n" c RichTextBoxで使用されている行末と一致するように、textBox1のハッカーは「\ n」で始まります。

string word = textBox1.Text; 
Color selectionColor = richTextBox1.SelectionColor; 

// match line-endings 
word = textBox1.Text.Replace("\r\n", "\n"); 

while ((index = richTextBox1.Text.IndexOf(word, startIndex)) != -1) 
{ 
// your other code 
} 

|

関連する問題