Can I look back text for a string in Visual C #?

I have a search function with them. I can find a line inside my richtextbox from the very beginning of the text to the end. When I find the last match, we start from the beginning.

Here is the code:

       #region Search

      private void txtSearch_KeyPress(object sender, KeyPressEventArgs e)
    {
        start = 0;
        end = 0;
    }     

    //Searchfield
    private void toolStripTextBoxSearch_Click(object sender, EventArgs e)
    {

    }//end TextBoxSearch

    public int FindMyText(string txtToSearch, int searchStart, int searchEnd)
    {
        // Set the return value to -1 by default.
        int retVal = -1;

        // A valid starting index should be specified.
        if (searchStart >= 0)
        {
            // A valid ending index
            if (searchEnd > searchStart || searchEnd == -1)
            {
                // Find the position of search string in RichTextBox
                indexOfSearchText = richTextBox.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None);
                // Determine whether the text was found in richTextBox1.
                if (indexOfSearchText != -1)
                {
                    // Return the index to the specified search text.
                    retVal = indexOfSearchText;
                }
            }
        }
        return retVal;
    }//end FindMyText

    private void buttonSearch_left_Click(object sender, EventArgs e)
    {

    }

    private void buttonSearch_right_Click(object sender, EventArgs e)
    {
        int startindex = 0;

        if (txtSearch.Text.Length > 0)
        {
             startindex = FindMyText(txtSearch.Text, start, richTextBox.Text.Length);
        }
            // If string was not found report it
            if (startindex < 0 )
            {
                if (stringfoundflag==1)
                {
                startindex = FindMyText(txtSearch.Text, 0, richTextBox.Text.Length); //Start at Pos. 0
                }
                else
                {
                    MessageBox.Show("Not found in Textfield", "Search", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }//end if 

             if (startindex >= 0)
            {
                stringfoundflag = 1;
            // Set the highlight color as red
            //richTextBox.SelectionColor = Color.Red;
            // Find the end index. End Index = number of characters in textbox
            int endindex = txtSearch.Text.Length;
                // Highlight the search string
                richTextBox.Select(startindex, endindex);
                // mark the start position after the position of
                // last search string
                start = startindex + endindex;
        }
    }

    // Reset the richtextbox when user changes the search string
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        start = 0;
        indexOfSearchText = 0;
    }

    private void txtSearch_Enter(object sender, EventArgs e)
    {
        if (txtSearch.Text == "Search")
        {
            txtSearch.Text = "";
        }
    }

    private void txtSearch_Leave(object sender, EventArgs e)
    {
        if (txtSearch.Text == "")
        {
            txtSearch.Text = "Search";
        }
    }

    #endregion

I have two search buttons on the right and one on the left, on the right it works as a description at the beginning.

Question:

Is it possible to change the search function using the button from right to left using my solution or change the entire search function?

Example. Start with the first match and jump than before the last match, and then the next after the last, etc.

+4
source share
1 answer

Hi, I found a solution for my problem. Hope someone can help this.

the code:

        public int FindMyTextleft(string txtToSearch, int searchStart, int searchEnd)
    {
        // Set the return value to -1 by default.
        int retVal = -1;

        // A valid starting index should be specified.
        if (searchStart >= 0)
        {
            // A valid ending index
            if (searchEnd > searchStart || searchEnd == -1)
            {
                // Find the position of search string in RichTextBox
                indexOfSearchText = richTextBox.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.Reverse);
                // Determine whether the text was found in richTextBox1.
                if (indexOfSearchText != -1)
                {
                    // Return the index to the specified search text.
                    retVal = indexOfSearchText;
                }
            }
        }//end FindMyTextleft
        return retVal;
    }//end FindMyText

    private void buttonSearch_left_Click(object sender, EventArgs e)
    {
        int startindex = 0;

        if (txtSearch.Text.Length > 0 & stringfoundflag == 1)
        {
            startindex = FindMyTextleft(txtSearch.Text, startindex, end);
        }

        else if (txtSearch.Text.Length > 0)
        {
            startindex = FindMyTextleft(txtSearch.Text, start, richTextBox.Text.Length);
        }
        // If string was not found report it
        if (startindex < 0)
        {
            if (stringfoundflag == 1)
            {
                startindex = FindMyTextleft(txtSearch.Text, 0, richTextBox.Text.Length); //Start at Pos. 0
            }
            else
            {
                MessageBox.Show("Not found in Textfield", "Search", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }//end if 

        if (startindex >= 0)
        {
            stringfoundflag = 1;
            // Set the highlight color as red
            //richTextBox.SelectionColor = Color.Red;
            // Find the end index. End Index = number of characters in textbox
            int endindex = txtSearch.Text.Length;
            // Highlight the search string
            richTextBox.Select(startindex, endindex);
            // mark the start position after the position of
            // last search string
            end = startindex;
        }
    }//buttonSearch_left_Click

0

All Articles