Hallo Leute,
ich habe mir aus der .Net RichTextBox zwecks besserer Rtf-Darstellung ein RichEdit 6.0 gebastelt (RichEdit v 6.0). Nach dem Einbinden der riched20.dll von Office 2007 wollte das Programm zur Laufzeit ebenfalls noch die msptls.dll (ebenfalls Office 2007, Beschreibung: Office component) haben. Die hab ich dann auf die gleiche Weise eingebunden. Soweit hat auch alles super funktioniert und funktioniert auch immer noch. Nur bin ich jetzt auf ein echt verwirrendes Problem gestoßen:
Ich habe eine Volltextsuche implementiert, bei der es zu Problemen kommt, wenn man nach Text am Ende des angezeigten Dokuments sucht (bzw. wenn man nach mehrmaligem Weitersuchen einen Treffer am Ende hat).
Ich matche bei jeder Suche zuerst per Regex und merke mir die Indices der Matches. Dann gehe ich beim Weitersuchen-Buttons nur noch die verschiedenen Indices durch.
Das geschieht in folgender Methode (restlicher Code auskommentiert, Fehler kommt trotzdem):
private void find(int index)
{
int position = this.Find(this.searchPattern, index, RichTextBoxFinds.None);
}
Von der Find-Methode der RichTextBox wird eine ArgumentOutOfRangeException ("startIndex darf nicht länger als die Länge der Zeichenfolge sein. Parametername: startIndex") geworfen, obwohl TextLength und Text.Length noch über dem index liegen 8o Auch in der Text-Eigenschaft steht noch der komplette Text drin, mit(!) meinem gesuchten Begriff ziemlich am Ende...
Hab mir die Find-Methode im Reflector mal angesehen und die Exception muss an folgender Stelle fliegen:
int textLength = this.TextLength;
if ((start < 0) || (start > textLength))
{
throw new ArgumentOutOfRangeException("start", SR.GetString("InvalidBoundArgument", new object[] { "start", start, 0, textLength }));
}
So nun meine Frage:
Wie kann es sein, dass diese Exception geworfen wird, obwohl der StartIndex eigentlich stimmt?
Ich hoffe mir kann jemand weiterhelfen, hänge jetzt schon seit gestern da dran und langsam zeigt mir google nurnoch besuchte Links an 8)
Vielen Dank schonmal im Vorraus!
MfG
DickesB