C#RichTextBox Find()错误?
作者:互联网
我不明白为什么position = 0而不是position = -1
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);
位置= -1如果
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);
解决方法:
不,这不是错误,但是我可以说文档可以编写,因为您必须深入研究以获得所需的信息.
经过一番摸索后,很明显的规则如下:
>起始值和结束值是从零开始的索引,因此当您输入3时,您要求它从不存在的字符开始.
>如果将开始和结束都指定为相同的值,则将按照documentation中的指定内容搜索全文.
具体使用示例:
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);
在从零开始的索引中,3和3都大于文本的实际长度,因此您尝试从不存在的字符开始.但是,因为您在开始和结束时都使用了3,所以您满足了上面的第二点,因为将搜索整个文本,这就是为什么您在位置0(第一次出现)处得到匹配的原因.
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);
在这里,您告诉它从最后一个字符开始,并且在搜索2个字符时它不匹配,因此得到-1.
因此,您的结果符合预期.
标签:richtextbox,c,winforms 来源: https://codeday.me/bug/20191027/1944571.html