如何通过c#中的richTextBox.find查找未知字符?

时间:2014-04-05 06:02:02

标签: c# find richtextbox

在C#的Windows窗体上有一个richTextBox。我正在通过find方法寻找一个特殊的字符串。 例如,我正在寻找“猫”。文本中的字符串。如你所知,可能有许多字符串依赖于猫:猫或猫或猫或猫或猫或猫。或猫,或猫:或猫\甚至甚至类别或催化剂或Catia和其他类型的东西。我怎样才能将猫看成像猫,猫或猫这样的动物。或猫或猫或猫等。我可以使用任何角色吗?类似于'猫&#39?;或者'猫*'寻找所有人物。

这是我使用的方法:

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
    {
        if (e.Node.Checked)
        {
            CheckedNodes.Add(e.Node);
        }
        else
        {
            CheckedNodes.Remove(e.Node);
        }



        richTextBox1.SelectAll();
        richTextBox1.SelectionBackColor = Color.White;
        richTextBox1.DeselectAll();

        for (int counter = 0; counter < CheckedNodes.Count; counter++)
        {
            int location = 0;

            while (location != -1)
            {
                location = FindMyText(" " + CheckedNodes[counter].Text + "", location + 1, richTextBox1.TextLength);


                if (location != -1)
                {
                    FindMyText(CheckedNodes[counter].Text, location + 1, richTextBox1.TextLength);
                    richTextBox1.SelectionBackColor = CheckedNodes[counter].ForeColor;
                }
            }
        }

        richTextBox1.DeselectAll();

    }


    public int FindMyText(string searchText, int searchStart, int searchEnd)
    {
        // Initialize the return value to false by default. 
        int returnValue = -1;

        // Ensure that a search string and a valid starting point are specified. 
        if (searchText.Length > 0 && searchStart >= 0)
        {
            // Ensure that a valid ending value is provided. 
            if (searchEnd > searchStart || searchEnd == -1)
            {
                // Obtain the location of the search string in richTextBox1. 
                int indexToText = richTextBox1.Find(searchText, searchStart, searchEnd, RichTextBoxFinds.MatchCase);
                // Determine whether the text was found in richTextBox1. 
                if (indexToText >= 0)
                {
                    // Return the index to the specified search text.
                    returnValue = indexToText;
                }
            }
        }

        return returnValue;
    }

1 个答案:

答案 0 :(得分:1)

在这里你可以找到一个增强的富文本框控件,这是它在VB.net中的唯一问题,

http://www.codeproject.com/Articles/32793/RichTextBox-Control-with-Find-functionality

但它解决了你的问题。