C# RichTextBox Find() Bug?
本文关键字:Bug RichTextBox Find | 更新日期: 2023-09-27 18:31:11
我不明白为什么position=0
反而position=-1
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);
position=-1
如果
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);
不,这不是
一个错误,但我想说文档可以编写,因为您必须深入研究以获取所需的信息。
经过一番玩弄,很明显规则如下:
start
和end
值是从零开始的索引,因此当您输入 3 时,您要求它从一个不存在的字符开始。如果将
start
和end
指定为相同的值,则会按照文档中的规定搜索整个文本。
具体使用您的示例:
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);
在从零开始的索引中,3
和3
都大于文本的实际长度,因此您尝试从不存在的字符开始。但是,由于您start
和end
都使用了3
,因此您满足上述第二点,因为整个文本将被搜索,这就是为什么您在位置 0 处获得匹配项(第一次出现)。
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);
在这里,您告诉它start
最后一个字符,当您搜索 2 个字符时,它无法匹配,因此您会得到-1
。
因此,您的结果符合预期。