PDA

View Full Version : سوال: جستجوی یک کلمه در RichTextBox و highlight کردن همه کلمه ها و انتخاب کردن کلمات بترتیب



FirstLine
شنبه 01 مهر 1396, 10:11 صبح
با سلام
برنامه winForm C# .Net4
در فرم برنامه یک متن بزرگ در RichTextBox دارم یک textbox و چهار دکمه (جستجو - بعدی - حذف - اصلاح)هم دارم
با وارد کردن یک کلمه در textbox (مثلا کلمه هواپیما) و زدن دکمه جستجو میخواهم همه کلمه جستجو شده در RichTextBox های لایت بشود و با زدن دکمه بعدی بترتیب کلمه های جستجو شده را انتخاب کند و با هر بار زدن دکمه بعدی کلمه انتخاب شده از حالت انتخاب خارج و های لایت بعدی انتخاب شود و در زمان هر انتخاب اگر دکمه حذف را زدم ان کلمه را حذف کند و اگر دکمه اصلاح را زدم متن انتخاب شده را با یک کلمه ثابت(Test) جایگزین کند
لطفا راهنمایی بفرمایید. و یا اگر نمونه مناسبی میشناسید معرفی کنید

- از RichTextBox استاندارد ویندوز استفاده کنم یا از کامپوننتها؟
- کدام کامپوننت RichTextBox برای این کار مناسبتر و بهتر است؟

با تشکر

danialafshari
یک شنبه 02 مهر 1396, 20:35 عصر
با سلام
این کلاس تمامی متن ها را Highlight می کند

static class Utility
{
public static void HighlightText(this RichTextBox myRtb, string word, Color color)
{


if (word == string.Empty)
return;


int s_start = myRtb.SelectionStart, startIndex = 0, index;


while ((index = myRtb.Text.IndexOf(word, startIndex)) != -1)
{
myRtb.Select(index, word.Length);
myRtb.SelectionColor = color;


startIndex = index + word.Length;
}


myRtb.SelectionStart = s_start;
myRtb.SelectionLength = 0;
myRtb.SelectionColor = Color.Black;
}
}

استفاده :


private void button1_Click(object sender, EventArgs e)
{
Utility.HighlightText(richTextBox1, textBox1.Text , Color.Red);
}

موفق باشید