PDA

View Full Version : چطوری میشه KeyPress رو با کلید خاص صدا زد؟



combo_ci
شنبه 13 بهمن 1386, 14:39 عصر
سلام من یه برنامه نوشتم که توش یه textbox داره...توی KeyPress اون txtbox یه کد نوشتم که فقط بشه عدد توش تایپ کرد....یه تیکه کد دیگه هم هست که دکمه backspace رو هم قبول میکنه و از آخر textbox یه کاراکتر کم میکنه....

حالا اگه برنامه رو اجرا کنین میبینین که وقتی back space زده شد بعد از کم شدن یه کاراکتر از کنترل textbox میاد رو اولین کاراکتر ...و برای تایپ کردن باید یه بار دکمه end رو زد بعد به آخر textbox.text اضافه کرد...

حالا میخواستم ببینم میشه یه جوری دکمه end رو به صورت manual فراخونی سلام من یه برنامه نوشتم که توش یه textbox داره...توی KeyPress اون txtbox یه کد نوشتم که فقط بشه عدد توش تایپ کرد....یه تیکه کد دیگه هم هست که دکمه backspace رو هم قبول میکنه و از آخر textbox یه کاراکتر کم میکنه....

حالا اگه برنامه رو اجرا کنین میبینین که وقتی back space زده شد بعد از کم شدن یه کاراکتر از کنترل textbox میاد رو اولین کاراکتر ...و برای تایپ کردن باید یه بار دکمه end رو زد بعد به آخر textbox.text اضافه کرد.

حالا میخواستم ببینم میشه یه جوری دکمه end رو به صورت manual فراخونی کرد؟

رها
شنبه 13 بهمن 1386, 15:13 عصر
سلام
آخر رویداد مربوطه این کد رو بنویس


TextBox1.SelectionStart = TextBox1.Text.Length;

hassan razavi
شنبه 13 بهمن 1386, 15:14 عصر
می تونید از SendKey هم استفاده کنید و End رو ارسال کنید

Mahdi.Kiani
شنبه 13 بهمن 1386, 17:40 عصر
حالا اگه برنامه رو اجرا کنین میبینین که وقتی back space زده شد بعد از کم شدن یه کاراکتر از کنترل textbox میاد رو اولین کاراکتر ...و برای تایپ کردن باید یه بار دکمه end رو زد بعد به آخر textbox.text اضافه کرد.

حالا میخواستم ببینم میشه یه جوری دکمه end رو به صورت manual فراخونی کرد؟

متاسفانه این هم از همون نمونه تاپیک هایی است که دوستان می خوان یک کار غلط را با یک کار غلط دیگه درست کنند.


سلام
آخر رویداد مربوطه این کد رو بنویس


TextBox1.SelectionStart = TextBox1.Text.Length;



می تونید از SendKey هم استفاده کنید و End رو ارسال کنید
و متاسفانه جواب های نه چندان خوبی (در مورد این مسئله) هم مطرح میشه.


دوست عزیز، تا الان چندین بار بر روی customize سازی textbox ها بحث شده. نمونه کد های زیادی اینجا ارائه شده. خود MSDN و Google هم دارای کد های بیشماری در این زمینه هست. اگر در مورد نحوه numeric کردن textbox جستجوی بیشتری می کردین ، قطعا کد های خیلی بهتری به دست می اوردین که در اون صورت دیگه نیاز به simulate کردن کلید END یا استفاده از selectionstart و یا هر چیز دیگه نبودین

مثلا یکی از اون کد ها اینه






private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = (char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar)) ? false : true;
}

رها
شنبه 13 بهمن 1386, 18:46 عصر
آقای کیانی عزیز
من جوابی درخور عنوان تاپیک به دوستمون دادم ایشون کدی نوشته بودن که دقیقاً با کد بنده تکمیل می شه
شماهم بهتره فقط جوابتون رو ارائه بدید

Mahdi.Kiani
شنبه 13 بهمن 1386, 19:04 عصر
آقای کیانی عزیز
من جوابی درخور عنوان تاپیک به دوستمون دادم


عنوان تاپیک هیچ ربطی به جواب شما نداره






چطوری میشه KeyPress رو با کلید خاص صدا زد؟ != TextBox1.SelectionStart = TextBox1.Text.Length;









شماهم بهتره فقط جوابتون رو ارائه بدید


من هم دقیقا همین کار را کردم!!!


حالا باز جواب آقای رضوی به عنوان تاپیک می خوره.

والبته این را هم باید عرض کنم که معمولا بیشتر سوال کنندگان اینجا برای سوالشون ارزش قائل نیستند. برای همین معمولا عنوان تاپیک را وقتی با صورت مسئله مقایسه می کنی 180 درجه فرق می کنه. به عنوان مثال فراخوانی یا simule کرن کیبورد هیچ ربطی به مشکل ایشون نداره.
و دوستان پاسخ گو هم بایستی در پاسخ دادن به این نوع تاپیک هم دقت کنند و هم به سوال کننده گوش زد کنند

به هر حال هیچ قصد توهینی به شما یا جناب رضوی که از دوستان خوب من هستند نبود. بلکه فقط یک گوشزد بود جهت دفعات بعدی

.


حاشیه
شاید برای شما که در روز 30 دقیقه پای نت میشینین دیدن این تاپیک ها براتون خیلی عادی باشه ولی برای من که در روز 18 ساعت پای نت هستم و حداقل این صفحه را هر 2 دقیقه یک بار refresh می کنم ، دیدن این جور چیزها خیلی عذاب اوره. و از ان جایی که شدیدا از بحث های بیخود که فقط باعث سردرد هستند بدم میاد ، از شما عذر خواهی می کنم اگر بهتون بی احترامی شد(گر چه چنین قصدی نبود) و بهتره دیگه این مسئله کش داده نشه و به اصول کار بپردازیم تا فروع کار.