PDA

View Full Version : تغییر رنگ کلماتی در RichTextBox



hdv212
سه شنبه 18 اردیبهشت 1386, 12:56 عصر
سلام
من یه RichTextBox دارم که از طریق دیتابیس پر میشه، میخوام وقتی که کاربر کلمه ای رو در دیتابیس جستجو میکنه و متن مربوط به اون در RichTextBox نمایش داده میشه، اون کلمه یا کلمات رنگش عوض بشه، کسی میتونه کمکم کنه ؟
مرسی

MH2538
سه شنبه 18 اردیبهشت 1386, 13:33 عصر
سلام
این یه کد پایه است که می تونی کامل ترش کنی


richTextBox1.SelectionStart = richTextBox1.Find("کلمه مورد نظر");
richTextBox1.SelectionLength = "کلمه موردنظر".Length;
richTextBox1.SelectionColor = Color.Red;

hdv212
سه شنبه 18 اردیبهشت 1386, 14:24 عصر
MH2538جان ممنونم ازت، خیلی کمکم کرد،ولی من کد رو نوشتم :
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
char[] ch = new char[]{' '};
int num = 0;
foreach (string s in this.richTextBox1.Text.Split(ch))
{
if(s == "که")
{
int indexStart = this.richTextBox1.Text.IndexOf(s);
this.richTextBox1.SelectionStart = indexStart;
this.richTextBox1.SelectionLength = s.Length;
this.richTextBox1.SelectionColor = Color.Red;
num++;
}
}
this.textBox2.Text = num.ToString();
}

همانطور که میبینید در خط آخر، تعداد کلماتی رو که مد نظرم بود، درست پیدا کرده منتها فقط همون کلمه ی اولی رو تغییر رنگ میده (در اینجا 'که' مورد نظر بوده)، کسی میتونه این کد رو برام کامل یا اصلاح کنه که همه ی کلماتی که توی متن پیدا کرده، تغییر رنگ بدن ؟ مرسی

Sorenaa_s
سه شنبه 18 اردیبهشت 1386, 16:14 عصر
یه نگاهی به این کلاس بندازید شاید به دردتون بخوره، فکر کنم کمک کنه بهتون.

hdv212
سه شنبه 18 اردیبهشت 1386, 17:43 عصر
Sorenaa_s عزیز ممنون از لطفت، من این کلاس رو کامپایل کردم، روی فرم هم کشیدم، حالا اون نتیجه ای که میخوام چطوری باید ازش بگیرم ؟ مثالی چیزی داری ؟

Ghasem Dehghani
سه شنبه 18 اردیبهشت 1386, 19:12 عصر
با سلام .
دوست عزیز کد خودتون درست بود ولی یکسری قواعد مثل نقطه شروع جستجو در اون رعایت نشده بود . کد شما را بهینه کردم براتون در قسمت زیر میزارم .
موفق باشی .

this.richTextBox1.SelectAll();
this.richTextBox1.SelectionColor = Color.Black;
this.richTextBox1.Select(0, 0);
string s = "که";
int num = 0;
for (int i = 0; i < richTextBox1.Text.Length - s.Length + 1; ++i)
{
if (richTextBox1.Text.Substring(i, s.Length) == s)
{
this.richTextBox1.SelectionStart = i;
this.richTextBox1.SelectionLength = s.Length;
this.richTextBox1.SelectionColor = Color.Red;
num++;
}
}
Text = num.ToString();
this.richTextBox1.Select(richTextBox1.Text.Length, 0);

hdv212
سه شنبه 18 اردیبهشت 1386, 19:42 عصر
Ghasem Dehghani عزیز واقعا ممنونم ازت، همین بود، درست شد. مرسی