2016-11-25 16 views
1

所以我想製作一個GUI,在richtextbox中查找用戶搜索到的單詞。我有兩個按鈕,一個用於查找字符串的下一個位置並高亮顯示,另一個按鈕用於查找搜索字符串的上一個位置。我的「下一步」按鈕正常工作,並在每次單擊文本時突出顯示文本中的下一個字符串位置。但我的上一個按鈕似乎不起作用。我究竟做錯了什麼?如何查找下一個和上一個搜索的字符串?

int index = 0; 

     //NEXT BUTTON 
private void button2_Click(object sender, EventArgs e) 
    { 
     richTextBox1.SelectionBackColor = Color.White; 
     richTextBox1.Find(textBox2.Text, index, richTextBox1.TextLength, RichTextBoxFinds.None); 
     richTextBox1.SelectionBackColor = Color.Yellow; 
     index = richTextBox1.Text.IndexOf(textBox2.Text, index) + 1; 
    } 

      // PREVIOUS BUTTON 
private void button1_Click(object sender, EventArgs e) 
    { 
     richTextBox1.Find(textBox2.Text, index -1, richTextBox1.TextLength, RichTextBoxFinds.None); 
     richTextBox1.SelectionBackColor = Color.White; 
     index = richTextBox1.Text.IndexOf(textBox2.Text, index) - 1; 
    } 

回答

2

您不需要自己計算新索引。使用Find方法的結果,它給你正確的索引。如果你想向後搜索使用RichTextBoxFinds.Reverse。意外的是,你也沒有在前一個按鈕中將顏色設置爲黃色。

已編輯的代碼。它現在可以正常工作了。

int selectionStart = 0; 
    int selectionStop = 0; 

    private void button1_Click(object sender, EventArgs e) 
    { 
     richTextBox1.SelectionBackColor = Color.White; 

     selectionStart = richTextBox1.Find(textBox1.Text, selectionStop, richTextBox1.TextLength, RichTextBoxFinds.None); 
     selectionStop = selectionStart + textBox1.Text.Length; 

     richTextBox1.SelectionBackColor = Color.Yellow; 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     richTextBox1.SelectionBackColor = Color.White; 

     selectionStart = richTextBox1.Find(textBox1.Text, 0, selectionStart, RichTextBoxFinds.Reverse); 
     selectionStop = selectionStart + textBox1.Text.Length; 

     richTextBox1.SelectionBackColor = Color.Yellow; 
    } 
相關問題