PDA

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



mehran6764
شنبه 11 فروردین 1397, 12:34 عصر
سلام . دوستان می دونیم کد زیر در رویداد KeyPress باعث میشه که داخل تکست باکس فقط عدد تایپ بشه ، حالا فرض کنید ما ده تا فرم داریم و میخوایم که تو تکست باکس اون ها فقط عدد تعریف بشه



if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))//a
e.Handled = true;//b


زیاد جالب نیست که روی تک تک تکست باکس فرم ها کلیک کنیم و این کد رو کپی کنیم . سوال من اینکه چطور میشه که رویدادی را داخل یک کلاس کپــی کـــرد و برای همه تکست باکس فرم های پروژه از اون رویداد استفاده کرد.

* سوالی که پرسیدم کلی است و اینو می دونم که میشه MaskedTextBox استفاده کرد . اون چیزی که میخوام بدونم اینکه میشه رویدادی رو برای کنترل فرم های مختلف به صورت مشترک تعریف کرد .

Mahmoud Zaad
شنبه 11 فروردین 1397, 14:20 عصر
سلام
شما یه کلاس به پروژه اضافه کنید و از تکست باکس ارث بری کنید و رویدادها و پراپرتی های مورد نظر رو بهش اضافه کنید و پروژه رو بیلد کنید. تا اینجا شما یک تکست باکس شخصی درست کردید که به تولباکس اضافه شده. حالا اگر فرم جدید می خواهید طراحی کنید می تونید به جای تکست باکس پیش فرض، از تکست باکس خودتون استفاده کنید. ولی اگر فرم ها طراحی شدن شما می تونید در فرم های مورد نظر در کلاس aaa.Designer.cs بگردید و به جای TextBox مثلاً بنویسد MyTextBox. به همین سادگی.(aaa نام فرم هست و MyTextBox هم تکست باکس شخصی شما.) این کار برای سایر کنترل ها از جمله دکمه، چک باکس، کمبوباکس، لیست باکس، دیتاگریدویو و ... هم قابل اجرا هست.
مثال:
class MyTextBox : TextBox
{

protected override void OnKeyPress(KeyPressEventArgs e)
{
//کدهای شما
}
}

danialafshari
دوشنبه 13 فروردین 1397, 09:16 صبح
با سلام
روش بالا کاملاً صحیحه
ولی به نظر من بهتره برای دریافت عدد اگر از کامپوننت های شرکت هایی مثل DevComponent ,DevExpress,... استفاده نمیکنید بهتره از MaskedTextBox استفاده کنید
چون در textBox وفتی یک جمله رو Paste کنید حروف رو هم قبول میکنه که برای هندل کردنش بازم باید کد بنویسید ولی MaskedTextBox خیلی عالیه
موفق باشید