Нет, это не ошибка, но я бы сказал, что документация может быть быть написано, как вы должны копать для получения необходимой информации.
После некоторого игры вокруг него, очевидно, что правила заключаются в следующем:
start
и end
значения равны нулю на основе индексов, поэтому, когда вы положили 3, то вы просите его, чтобы начать в характера, которого не существует.
Если вы указали оба start
и end
, чтобы иметь то же значение, то весь текст ищется, как указано в documentation.
Используя ваши примеры конкретно:
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("a", 3, 3, RichTextBoxFinds.None);
В нулевой индексирование, 3
и 3
оба больше, чем фактическая длина текста, так что вы пытаетесь начать с характера, которого не существует. Однако, поскольку вы использовали 3
как для start
, так и для end
, вы удовлетворяете 2-й точке выше, поскольку текст всего будет искать, поэтому вы получаете совпадение в позиции 0 (первое вхождение).
RichTextBox.Text = "aaa";
int position = RichTextBox.Find("aa", 2, 3, RichTextBoxFinds.None);
Здесь вы сказать это start
на последнем символе, и как вы будете искать для 2-х символов, он не может соответствовать, так что вы получите -1
как результат ..
Так что ваши результаты, как и ожидалось.
Если документация не покрывает его, это __is__ ошибка и, конечно, не так, как ожидалось. Является ли ошибка в документах или в поведении, которое я не знаю, но обертывание довольно __crazy__ imo, мягко говоря, поэтому я называю это ошибкой __bug__, __BUG__ ;-). Документ [doc] (https://msdn.microsoft.com/de-de/library/yab8wkhy%28v=vs.110%29.aspx) говорит, что @Graham отмечает: _ Когда начальные и конечные параметры предоставляются, то же значение, что и весь элемент управления, ищет обычный поиск_, так что это __not wrap around__, просто странно .. – TaW
@TaW: Кажется, вы правы, что не обертывались, я был уверен, что доказал, что вчера тестировал wen, но я теперь, похоже, это не так, должно быть, была моей ошибкой. Я обновлю свой ответ – musefan
ok, thx для вашего ответа. но если start> = RichTextBox.Length, зачем возвращать 0? – GRUNGER