PDA

View Full Version : سوال: چطوری رنگ متن تکس باکس رو عوض کنم



nibosite
جمعه 14 فروردین 1394, 19:17 عصر
با سلام
سوال من اینه که چطوری رنگ تکه ای از متن یک تکس باکس رو عوض کنم مثلا میخوام وقتی شخص نوشت test رنگش قرمز باشه یا اگر نوشت test2 رنگ آپی باشه در غیر این صورت رنگش مشکی باشه
چیکار باید بکنم ؟

am_al_59
جمعه 14 فروردین 1394, 19:18 عصر
باید از رویداد TextChanged استفاده کنی و پس از تغییر متن داخل TextBox اونو چک کنی و عملیات لازم رو انجام بدی
نمونه کد این میشه:


void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == "text1")
textBox1.BackColor = Color.Yellow;
else if (textBox1.Text == "text2")
textBox1.BackColor = Color.Red;
else if (textBox1.Text == "text3")
textBox1.BackColor = Color.Green;
}

nibosite
جمعه 14 فروردین 1394, 19:25 عصر
ممنون بابت جوابتون ولی اینی که شما دادین بک گراند رو عوض میکنه اگه از
ForeColor
هم استفاده کنم رنگ کل عوض میشه من میخوام فقط یه بخش رنگش عوض بشه مثلا برنامه نوتپد ++ که وقتی رو زبان اچ تی ام ال اس تایپ میکنیم
<html>

am_al_59
جمعه 14 فروردین 1394, 19:27 عصر
این رنگ کل متن رو عوض میکنه
اگر فقی یک قسمت از کل متن رو میخوای عوض کنی باید از RichTextBox استفاده کنی


void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == "text1")
textBox1.ForeColor = Color.Yellow;
else if (textBox1.Text == "text2")
textBox1.ForeColor = Color.Red;
else if (textBox1.Text == "text3")
textBox1.ForeColor = Color.Green;
}


کد برای RichTextBox میشه


richTextBox1.Select(1, 10);
richTextBox1.SelectionColor = Color.Green;

nibosite
جمعه 14 فروردین 1394, 19:29 عصر
خودم که دارم میگم ForeColor نمیشه!

من میخوام فقط یه بخش رنگش عوض بشه مثلا برنامه نوتپد ++ که وقتی رو زبان اچ تی ام ال تایپ میکنیم
<html>
رنگش قرمز میشه
مثل اون میخوام
که در حالت Multiline هم کار کنه

nibosite
جمعه 14 فروردین 1394, 19:40 عصر
این رنگ کل متن رو عوض میکنه
اگر فقی یک قسمت از کل متن رو میخوای عوض کنی باید از RichTextBox استفاده کنی


void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == "text1")
textBox1.ForeColor = Color.Yellow;
else if (textBox1.Text == "text2")
textBox1.ForeColor = Color.Red;
else if (textBox1.Text == "text3")
textBox1.ForeColor = Color.Green;
}


کد برای RichTextBox میشه


richTextBox1.Select(1, 10);
richTextBox1.SelectionColor = Color.Green;




هیچ راهی نیست توی تکس باکس درستش کنم ؟!

nibosite
جمعه 14 فروردین 1394, 19:45 عصر
هیچ راهی نیست توی تکس باکس درستش کنم ؟!
مشکلم حل شد ممنون ولی یک مشکل دیگه پیدا کردم توی خط های بعدی عمل نمیکنه چیکارش کنم ؟!

am_al_59
جمعه 14 فروردین 1394, 19:46 عصر
TextBox این قابلیت رو در حالت عادی نداره این لینکو برات گذاشتم خودت ببینی
http://stackoverflow.com/questions/8957981/is-it-possible-to-have-differently-colored-lines-in-multiline-text-box

توی RichTextBox راحت میتونی این کارو انجام بدی و فکر نکنم تعویض کنترل های مشکلی پیش بیاده همه صفات و توابع TextBox رو داره
برای پیدا کردن موقعیت کلمه مورد نظرت هم بایت از متد IndexOf استفاده کنی

موفق باشی

am_al_59
جمعه 14 فروردین 1394, 19:48 عصر
با همون IndexOf میتونی انجام بدی ولی کاراکتر خط جدیدو یک کاراکتر حساب میکنه
متد دیگه ای هم داره به اسم GetFirstCharIndexFromLine که از اسمش معلومه کارش چیه

nibosite
جمعه 14 فروردین 1394, 19:56 عصر
ممنون مشکلم حل شد