PDA

View Full Version : سوال: چگونگی ذخیره آخرین کلمه موجود در یک RichTextBox



k_ce_esf
یک شنبه 02 مرداد 1390, 09:23 صبح
با سلام
یک RichTextBox دارم که میتونه تعداد زیادی کلمه درش نوشته شه.می خوام در حال تایپ متن ها همیشه آخرین کلمه ای که در این RichTextBox نوشته میشه را در متغیری ذخیره کنم یعنی به محضی که کاربر کلید space را فشار داد و خواست کلمه بعدی را تایپ کنه این رشته خالی بشه و درش کلمه جدیدی که داره کاربر تایپ میکنه قرار بگیره.
چه طور میتونم این کار را انجام بدم؟
ممنون میشم کمکم کنید.

mehran_sh_t
یک شنبه 02 مرداد 1390, 09:41 صبح
در رویداد keypress کنترل مورد نظر، چک کنید اگر space بود، رشته رو بر اساس کاراکتر space به آرایه ای از کلمات تقسیم کنید و آخرین اندیس کلمه مورد نظر شماست (شاید یکی مونده به آخر به خاطر space ای که در آخر می زنید)

k_ce_esf
یک شنبه 02 مرداد 1390, 10:18 صبح
ممنونم از جوابتون
اما من میخوام وقتی space زده شد متغیر string ام خالی بشه و از آن جا به بعد هرچی کاربر تایپ میکنه به اون متغیر string ام اضافه بشه، تا زمانی که کاربر دوباره space را فشار بده و با این کار این string را خالی کنه.
اگر هم بیام کل متن RichTextBox م را بعد زدن هر space،جدا کنم با split کار زمانبریه چون هر بار که هر کلید فشار داده میشه این split از اول متن باید انجام بشه تا برسه به کلمه آخر در متن،اگه بشه متن RichTextBox را با زدن هر دکمه از آخر split کرد ،باز بد نیست اما اصلا این کار امکان پذیره؟در ضمن چه طوری من باید بگم آخرین اندیس آرایه را بریز توی این رشته وقتی نمیدونم طول متن RichTextBox م چند کلمه است؟
به جز این راه، راه دیگه ای نیست؟

mehran_sh_t
یک شنبه 02 مرداد 1390, 11:30 صبح
ببخشید، اول اشتباه متوجه شدم، این که راحت تر شد! تو رودیداد keypress، چک کنید، اگر space بود، string رو خالی کنید، اگر space نبود، هر چی بود به string اضافه کنید

k_ce_esf
یک شنبه 02 مرداد 1390, 11:55 صبح
باز هم ممنونم
بله درست میفرمایید اما مشکل من دقیقا همینه که نمی دونم چه طور بگم که هر کلید کاراکتری و عددی اگه زده شد به string اضافه کن.از کد زیر برای این کار استفاده کردم:


newtext += e.KeyCode.ToString();

اما مشکل این کد اینه که هر کلید را که فشار داده میشه به رشتم اضافه میکنه،اگه بگم اگه کلیدهام فقط کلید های عددی و حروف هستند ،به این رشته اضافه کنه هم میشه.اما یه مشکل دیگه هست و اون اینکه مثلا کاربر abcd را تایپ میکنه،در این صورت string ما برابر abcd میشه،بعد کاربر میفهمه که چند تا از این حرف ها را اشتباه تایپ کرده ،با delete یا backspace اون حروف را پاک میکنه ،مثلا ac را پاک میکنه در این صورت رشته من باید به bd تغییر کنه،این را باید چه طوری تعریف کنم و کداشو بنویسم؟؟؟؟؟
ممنون میشم اگه کمکم کنید

k_ce_esf
یک شنبه 02 مرداد 1390, 16:04 عصر
ممنونم
بالاخره به جواب رسیدم،کد هایی که استفاده کردم را این جا می گذارم شاید براتون مفید باشه.
(توضیح این که 32 کد space و \b کد back space است)
string myVariable;
public Form1()
{
InitializeComponent();
label1.Text = "";
}

private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 32)
myVariable = String.Empty;
else if (e.KeyChar.Equals('\b'))
{
if (myVariable.Length > 0)
myVariable = myVariable.Remove(myVariable.Length - 1);
}
else
myVariable += e.KeyChar.ToString();
label1.Text = myVariable;
}
}