我有一个搜索功能,我可以从文本的开头到结尾在我的富文本框中搜索一个字符串。当我找到最后一个符合时,它从头开始。
这里的代码:
#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
我有两个按钮,一个向右搜索,一个向左搜索,右侧的工作原理与开头的描述相同。
问题:
我可以用我的解决方案将搜索功能从右到左的按钮反转,还是必须更改整个搜索功能?
示例:从第一个开始,然后跳到最后一个,然后倒数第二,依此类推。
最佳答案
我找到了解决我的问题的方法。
代码:
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
关于c# - 我可以在 Visual C# 中向后浏览文本以获取字符串吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38054095/