PDA

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



FirstLine
یک شنبه 23 مهر 1396, 10:33 صبح
با سلام
در winform & C#‎ .net2 یک RichTextBox با دو دکمه و کومبو باکس دارم
- با زدن دکمه کلمه بعدی اگر در متن یک کلمه انتخاب شده است حالت select به کلمه بعدی منتقل شود و کلمه بعدی انتخاب شود
- و با زدن دکمه قبلی، کلمه فعلی که انتخاب شده و کلمه قبل از کلمه انتخاب شده به حالت انتخاب شده ، انتخاب شود
- با انتخاب کومبو باکس عددی مثلا کلمه سوم انتخاب شود
لطفا راهنمایی بفرمایید

146755
با تشکر

ROSTAM2
یک شنبه 23 مهر 1396, 12:52 عصر
سوالتون واضح نيست ، مي خوايد مثل Ctrl + Shift و كليد هاي Arrow در انتخاب متن عمل كنه يا چيز ديگه اي؟!

FirstLine
یک شنبه 23 مهر 1396, 15:18 عصر
سوالتون واضح نيست ، مي خوايد مثل Ctrl + Shift و كليد هاي Arrow در انتخاب متن عمل كنه يا چيز ديگه اي؟!

در این حالت طبق عکس کلمه سوم (کسی) در حالت انتخاب است.
میخوام به این صورت باشه که در همین حالت:
اگه دکمه "انتخاب کلمه بعدی" را زد کلمه "است" انتخاب شود و اگه دوباره این دکمه را زد کلمه بعدی که "به" است انتخاب شود و همینطور کلمه های بعدی..
اگه دکمه "انتخاب کلمه قبلی" را زد کلمه "یاغی" انتخاب شود و اگه دوباره این دکمه را زد کلمه قبلی که "فارس" است انتخاب شود و همینطور کلمه های قبلی..
و یا از کومبو باکس اگر عدد 6 را انتخاب کرد کلمه ششم که "به" است انتخاب و select شود

رامین مرادی
یک شنبه 23 مهر 1396, 15:32 عصر
در این حالت طبق عکس کلمه سوم (کسی) در حالت انتخاب است.
میخوام به این صورت باشه که در همین حالت:
اگه دکمه "انتخاب کلمه بعدی" را زد کلمه "است" انتخاب شود و اگه دوباره این دکمه را زد کلمه بعدی که "به" است انتخاب شود و همینطور کلمه های بعدی..
اگه دکمه "انتخاب کلمه قبلی" را زد کلمه "یاغی" انتخاب شود و اگه دوباره این دکمه را زد کلمه قبلی که "فارس" است انتخاب شود و همینطور کلمه های قبلی..
و یا از کومبو باکس اگر عدد 6 را انتخاب کرد کلمه ششم که "به" است انتخاب و select شود


خب هایلایت که با ریچ تکست راحته.(اگه اینو سرچ کنید نمونه های خوبی پیدا میکنید)
در مورد انتخاب کلمه هم، شما دوتا تابع نیاز دارید یکی برای کلمه بعدی و یکی دیگه برای کلمه قبلی.
نحوه کار تابع کلمه بعدی هم به این صورته که ایندکس اخر کلمه انتخاب شده رو دارید(بر فرض مثال) خب بعداز کلمه یک space هست اونو رد میکنید و مکان یا همون ایندکس اشارگرتون رو تو یه متغییر ذخیره میکنید بعد اشاره گر رو دونه دونه میبری جلو با حلقه وقتی به حرفی رسیدی که space هست ایندکس ما قبل آخر فضای خالیتون میشه انتهای اون کلمه. و حالا شما اول و آخر کلمه رو دارید میتونید اون کلمه رو هایلایت کنید.
تابع کلمه قبلی هم همون کار رو باید بکنید فقط با این تفاوت که گام حرکتتون باید منفی باشه.

رامین مرادی
یک شنبه 23 مهر 1396, 16:06 عصر
عجله ای نوشتم ولی میشد بهتر از اینم نوشت



int Index=0;
int End= 0;




private void button3_Click(object sender, EventArgs e)
{
richTextBox1.SelectionStart = Index;
richTextBox1.SelectionLength = End;
richTextBox1.SelectionBackColor = Color.White;
SelectNextText(End);
}


public void SelectNextText(int index)
{
int A=index;
int B=index;
for(int i=A+1;i<=richTextBox1.TextLength;i++)
{
richTextBox1.SelectionStart=i;
richTextBox1.SelectionLength=1;
if(richTextBox1.SelectedText==" ")
{
richTextBox1.SelectionStart = index;
richTextBox1.SelectionLength = i-A;
richTextBox1.SelectionBackColor = Color.Orange;
this.End = i+1;
break;
}
}
}