2009-05-07 3 views

ответ

0

Не уверен вверх поиска, но, насколько найти вы можете использовать что-то вроде этого

int selStart = ControltoSearch.SelectionStart; 
int selLength = ControltoSearch.SelectionLength; 
int newLength = SearchFor.Length; 

int newStart = searchIn.IndexOf(SearchFor, selStart + selLength, compareType); 

ControltoSearch.SelectionStart = newStart >= 0 ? newStart : 0; 
ControltoSearch.SelectionLength = newLength; 
ControltoSearch.ScrollToCaret(); 
ControltoSearch.Focus(); 

return newStart; 

Для согласованного случае вы можете использовать String.ToLowerInvariant() как на поиск в тексте и поиска текста в противном случае String.Contains() является случай чувствительный

searchIn.ToLowerInvariant().Contains(SearchFor.ToLowerInvariant()) 
+0

mmm это хорошее начало, я предполагаю, что compareType предназначен для поиска вверх или вниз? – 2009-05-07 22:36:32

1

Вы можете использовать метод «Найти» в окне Rich Text Box.

Если вы установили форму с флажком «Случай соответствия» и флажок «Поиск вверх» и добавили свойство в форму поиска, называемую ControlToSearch, которая принимает элемент управления RichTextBox, вы можете сделать что-то вроде следующие:

RichTextBoxFinds options = RichTextBoxFinds.None; 

int from = ControlToSearch.SelectionStart; 
int to = ControlToSearch.TextLength - 1; 

if (chkMatchCase.Checked) 
{ 
    options = options | RichTextBoxFinds.MatchCase; 
} 
if (chkSearchUp.Checked) 
{ 
    options = options | RichTextBoxFinds.Reverse; 
    to = from; 
    from = 0; 
} 

int start = 0; 
start = ControlToSearch.Find(txtSearchText.Text, from, to, options); 

if (start > 0) 
{ 
    ControlToSearch.SelectionStart = start; 
    ControlToSearch.SelectionLength = txtSearchText.TextLength; 
    ControlToSearch.ScrollToCaret(); 
    ControlToSearch.Refresh(); 
    ControlToSearch.Focus(); 
} 
else 
{ 
    MessageBox.Show("No match found", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
} 
Смежные вопросы