2016-11-25 56 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; 
    } 
相关问题