0

我正在尝试在 ms word 中创建查找和替换。我创建了一个新form的并添加了textbox和​​ findnext button

现在的问题是如何遍历文本框并一一查找文本并突出显示它们。

我试过了

    private void btnFindNext_Click(object sender, EventArgs e)
    {
        frmTextpad text = (frmTextpad)Application.OpenForms["frmTextpad"];
        int length = txtFind1.Text.Length;
        for (int a = 0; a >= 0; a++)
        {
            int location = text.Current.Find(text.Current.Text, a, RichTextBoxFinds.None);
            text.Current.Select(location, txtFind1.Text.Length);
            text.Current.SelectionBackColor = Color.Blue;
        }
    }

我得到一个ArgumentOutofRangeException.

请问我做错了什么,我怎样才能实现我想要的?

4

2 回答 2

2

您的 for 循环永远不会终止,并且一直运行到文本块的末尾并超出您正在搜索的字符串的范围。

for (int a = 0; a >= 0; a++)

只要int a大于 0,就会一直运行,因为你永远不会减少它。当循环到达某个点(您正在搜索的字符串的长度)时,您将希望终止循环。可能更像这样:

for (int a = 0; a < text.Current.Text.Length; a++)

看起来您正在此处搜索文本框以查找其自己的文本:

int location = text.Current.Find(text.Current.Text, a, RichTextBoxFinds.None);

我不熟悉您的表单的结构,但看起来您想要搜索txtFind控件的值。所以你想要的更像是这样的:

int location = text.Current.Find(txtFind1.Text, a, RichTextBoxFinds.None);
于 2013-09-17T14:03:53.363 回答
1

看着

  for (int a = 0; a >= 0; a++)

截至目前,for循环永远不会停止

所以这不a >= 0应该是应该的a <= length

于 2013-09-17T13:50:16.807 回答