PDA

View Full Version : پیدا کردن رشته مورد نظر از یک TextBox



neo1989021
دوشنبه 29 خرداد 1391, 12:27 عصر
سلام به دوستان عزیزم

دوتا Textbox و یک button تو فرمم دارم

تو Textbox2 چندین خط متن نوشته شده

می خواهم اگه کاربر تو Textbox1 متنی رو نوشت که در Textbox2 وجود داشت
متن مورد نظر در تو Textbox2 سلکت بشه (روش پر رنگ بشه)

saman_h
دوشنبه 29 خرداد 1391, 13:56 عصر
سلام به دوستان عزیزم

دوتا Textbox و یک button تو فرمم دارم

تو Textbox2 چندین خط متن نوشته شده

می خواهم اگه کاربر تو Textbox1 متنی رو نوشت که در Textbox2 وجود داشت
متن مورد نظر در تو Textbox2 سلکت بشه (روش پر رنگ بشه)


سلام
به این صورت عمل کنید :
textbox2.select(textbox2.find(textbox1.text),textb ox1.text.length);
خب حالا با قسمت انتخاب شده میتونی هرکاری دوس داری بکنی . مثلا بخوای رنگشو عوض کنی میتونی بعد از اون دستور بنویسی :
textbox2.selectioncolor=color.Green
یا بخوای فونتشو عوض کنی بنویسی :
textbox2.selectionfont=new font ( "arial", 20 ) ;
فقط دقیقا یادم نیس با Textbox بشه این کارو کرد یا نا !!! نشد از RichTextBox استفاده کن
به این تاپیک هم یه سر بزن : http://barnamenevis.org/showthread.php?333371-چگونگی-نوشتم-متن-در-Textbox-یا-RichTextBox-به-صورت-چند-رنگ

vof.ir
دوشنبه 29 خرداد 1391, 14:00 عصر
اول مطمئن باشید که در تکست باکس معمولی می توان با کد نویسی تنها بخشی از نوشته را هایلایت کرد
بعد برای یافتن رشته مورد نظر از هزارتا روش میشه استفاده کرد
مثلا یکیش استفاده از تابع
IndexOF()
که در کلاس
string
تعریف شده است.
یا استفاده از Regex
یا موارد دیگر.
شما می تونید با استفاده از همون تابعی که گفتم ایندکس اولین کاراکتر از رشته ای که پیدا شده است را پیدا کنید و به اندازه تعداد کاراکتر رشته مورد نظر؛
رشته درون تکست باکس 2 را سلکت کنید
در کنترل
richtextbox
فکر می کنم این امکان باشد

neo1989021
دوشنبه 29 خرداد 1391, 14:55 عصر
سلام
به این صورت عمل کنید :
textbox2.select(textbox2.find(textbox1.text),textb ox1.text.length);
خب حالا با قسمت انتخاب شده میتونی هرکاری دوس داری بکنی . مثلا بخوای رنگشو عوض کنی میتونی بعد از اون دستور بنویسی :
textbox2.selectioncolor=color.Green
یا بخوای فونتشو عوض کنی بنویسی :
textbox2.selectionfont=new font ( "arial", 20 ) ;
فقط دقیقا یادم نیس با Textbox بشه این کارو کرد یا نا !!! نشد از RichTextBox استفاده کن
به این تاپیک هم یه سر بزن : http://barnamenevis.org/showthread.php?333371-چگونگی-نوشتم-متن-در-Textbox-یا-RichTextBox-به-صورت-چند-رنگ

دوست عزیز با richtextbox شده
فقط دو تا مشکل وجود داره:
1)می خواهم یه شرطی بذارم اگه بود به کاربر message بده
2)اگه یک لغت چند بار وجود داشت همشون مثلا سبز کنه

golnouri
دوشنبه 29 خرداد 1391, 15:08 عصر
چطور میشه text مورد نظر و فقط انتخاب کرد (بدون رنگ و ...)؟

tooraj_azizi_1035
دوشنبه 29 خرداد 1391, 16:25 عصر
سلام

Works fine:

public void ColorAll(string s)
{
rtbxContent.BeginUpdate();

int start = 0, current = 0;
RichTextBoxFinds options = RichTextBoxFinds.MatchCase;
start = rtbxContent.Find(s, start, options);
while (start >= 0)
{
rtbxContent.SelectionStart = start;
rtbxContent.SelectionLength = s.Length;
rtbxContent.SelectionColor = Color.Red;
rtbxContent.SelectionBackColor = Color.Yellow;

current = start + s.Length;
if (current < rtbxContent.TextLength)
start = rtbxContent.Find(s, current, options);
else
break;
}

rtbxContent.EndUpdate();
}

saman_h
دوشنبه 29 خرداد 1391, 16:31 عصر
دوست عزیز با richtextbox شده
فقط دو تا مشکل وجود داره:
1)می خواهم یه شرطی بذارم اگه بود به کاربر message بده
2)اگه یک لغت چند بار وجود داشت همشون مثلا سبز کنه

خوبکه خودت میگی شرط میخواد ... خوب بذار براش دیگه همه چیز که نباید ... !!
if (textbo2.find(textbox1.tex)) { اون کارهایی که گفتم }
داخلشم یه مسیج بذار مثلا :
messagebox.show("وجود دارد");

واسه چنبارشم فکرکنم هرچی باشه رو انتخاب کنه اگه نه میتونی چنبار دکمه رو فشار بدی یا مثلا با تایمر اینکار بکنی یا اینکه بذاریش توی یه حلقه ... راه زیاده دیگه هرطور دوس داری

neo1989021
دوشنبه 29 خرداد 1391, 20:34 عصر
سلام

Works fine:

public void ColorAll(string s)
{
rtbxContent.BeginUpdate();

int start = 0, current = 0;
RichTextBoxFinds options = RichTextBoxFinds.MatchCase;
start = rtbxContent.Find(s, start, options);
while (start >= 0)
{
rtbxContent.SelectionStart = start;
rtbxContent.SelectionLength = s.Length;
rtbxContent.SelectionColor = Color.Red;
rtbxContent.SelectionBackColor = Color.Yellow;

current = start + s.Length;
if (current < rtbxContent.TextLength)
start = rtbxContent.Find(s, current, options);
else
break;
}

rtbxContent.EndUpdate();
}



این روش یک مقدار برام سخته
یک روش ساده تر وجود نداره؟