PDA

View Full Version : سوال: ایجاد رویداد برای کنترل سفارشی



mohsenhker
یک شنبه 23 خرداد 1389, 14:49 عصر
سلام خدمت دوستان عزیز :

من یه کنترل ساختم حالا میخوام واسش رویداد تعربف کنم اگه از دوستان اطلاعاتی در این زمینه داره در اختیار من بزارن ممنون میشم :لبخندساده:

mohsenhker
یک شنبه 23 خرداد 1389, 15:21 عصر
آقا کسی پیدا نشد جواب مارو بده
انگار دوستان فقط توی کار ذخیره و بازیابی هستن
:عصبانی++::عصبانی++:

mohsenhker
دوشنبه 24 خرداد 1389, 10:26 صبح
:ناراحت:
یکی نیست به داد ما برسه احتیاج فوری دارم

Rejnev
دوشنبه 24 خرداد 1389, 10:46 صبح
خب
اول باید یک Delegate بنویسید که به متد رویداد اشاره کنه.



public delegate void Text_Change(object sender, EventArgs e);


بعد یک رویداد از نوع اون تعریف کنید.



public event Text_Change Text_Chaneged;


حالا کنترل دارای رویداد Text_changed میباشد.
حالا باید بگیم که چه موقع این رویداد raise بشه.
توجه داشته باشید که اشیایی که از نوع delegate تعریف میشن میتونن به یک تابع اشاره کنن. یعنی عملا میتونید چنین دستوری رو برای Text_changed اجرا کنید



myUserControl.Text_changed+= new classname.eventName(method name)


در ضمن باید پروتو تایپ تابعی که بهش میدیم دارای پارامترهای مشابه تعریف شده در Delegate باشه.
نکته»وقتی که شما یک کنترل روی فرم میزارید و در قسمت رویدادها روی نام رویدادی که ساختین دابل کلیک میکنید خود به خود این عمل انجام میشه.

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



for example
property sumProp{
get;
set{
if (this.Text_changed!=null)
this.Texh_changed(this,new EventArgs());
}
}


یعنی اگه روی فرم این رویداد مقدار گرفته اونوقت اون تابع رو اجرا کن.
یک نمونه هم در ضمیمه میذارم.
برای راهنمایی جهت افزودن به پروژه هم به لینک های امضا مراجعه کن