在RTF编辑器上搜索功能

时间:2011-12-04 14:59:48

标签: c# .net visual-studio visual-studio-2010

我正在创建一个RTF编辑器,我需要有关搜索功能的帮助。我已经创建了查找和替换代码,但我无法弄清楚如何编写find nextreplace all代码。任何帮助都感激不尽。以下是我已经拥有的代码。 (我正在使用Visual Studio 2010 c#)

    private void buttonFind_Click(object sender, EventArgs e)
    {

        RichTextBox frm1TB = ((Form1)this.Owner).rTB;

        int foundAt;
        foundAt = frm1TB.Text.IndexOf(txtSearch.Text);
        if (foundAt == -1)
        {
            MessageBox.Show("Not Found");
        }
        else
        {

            frm1TB.SelectionStart = foundAt;
            frm1TB.SelectionLength = txtSearch.TextLength;
            frm1TB.Focus();
            btnFindnext.Enabled = true;
            btnReplaceall.Enabled = true;
            btnReplace.Enabled = true;

        }

    }

    private void buttonfindNext_Click(object sender, EventArgs e)
    {

    }

    private void buttonreplace_Click(object sender, EventArgs e)
    {
        RichTextBox frm1TB = ((Form1)this.Owner).rTB;
        btnFind_Click(sender,e);

        frm1TB.SelectedText = txtReplace.Text;         


        }

    private void buttonreplaceAll_Click(object sender, EventArgs e)
    {

    }

2 个答案:

答案 0 :(得分:2)

您可以使用此overload indexOf,将startIndex定义为您找到的最后一个结果的索引+搜索字符串的长度。现在,indexOf会在最后一次出现之后的RTF框中为你提供txtSearch.Text中字符串的位置。

全部替换Replace

答案 1 :(得分:0)

我认为你可以这样做:

frm1TB.Rtf = frm1TB.Rtf.Replace("replace what", "with this");