سؤال

وأود أن تريد البحث إلى أعلى أو أسفل، وحالة المباراة إن أمكن. حتى روابط ليحصل لي بدأت سيكون موضع تقدير.

هل كانت مفيدة؟

المحلول

وغير متأكدة من البحث عن ولكن بقدر ما يجد يمكنك استخدام شيء مثل هذا

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())

نصائح أخرى

هل يمكن استخدام طريقة "البحث" في مربع نص منسق نفسها.

إذا إعداد نموذج مع مربع الاختيار "حالة ماتش" ومربع الاختيار "بحث لأعلى" و قد أضافت خاصية على شكل تجد الخاص بك يسمى 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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top