public void Populate(BibleVersion bible, int target) { StringBuilder _rtfData = new StringBuilder(); //DreamTools.ElapsedTime("Start Populate"); if (target < 0 || target >= bible.VerseCount) { return; } int[] range = loadRange(target, bible.VerseCount - 1); verseIndex.Clear(); firstVerse = range[0]; lastVerse = range[1]; currentVerse = target; int length = 0; for (int i = range[0]; i <= range[1]; i++) { verseIndex.Add(length); // Set the reference text to background color 2, foreground color 3, // bold, font 0, size 10pt _rtfData.Append(@"\highlight12\cf3\b\f0\fs20 "); // We need to keep track of how many non-control characters we're adding so we // can't just use: _rtfData.Append( bible.GetSimpleRef(i) + " " ); // The text added here should be identical to the text searched for in BibleVersion.Find length += BibleRTF.AppendText(_rtfData, bible.GetSimpleRef(i, true) + " "); _rtfData.Append(@"\highlight0\cf2\b0\f1\fs20 "); length += BibleRTF.AppendText(_rtfData, " " + bible.GetSimpleVerseText(i) + "\n"); // Note: Unicode characters get converted to their ASCII equivalents. } this.SelectAll(); this.InsertRawRtf(_rtfData.ToString(), rtfFonts, rtfColors); this.SelectAll(); this.SelectionIndent = 5; this.SelectionHangingIndent = 75; this.SelectionRightIndent = 5; this.ScrollTo(this.GetSelectionFromVerseIndex(target)[0]); //DreamTools.ElapsedTime("Finish Populate"); }