PDA

View Full Version : رویداد Paint چجوری همون OnPaint هست؟!!!!!!



hanieh66
چهارشنبه 11 دی 1387, 20:59 عصر
چرا مثلا اسم خیلی از رویدادهایی که virtual هستن با دو حرف On شروع می شه مثل OnPaint , OnKeyDown , OnKeyPress ولی باز اونایی که مثلا توی خود فرم هستند دیگه On رو ندارن و چجوری می شه که اسم رویداد رو یه چیز دیگست ولی داره همون رو override می کنه؟!!!

مثلا توی فرم رویداد Paint داریم ولی وقتی که می خوام این رو override کنم باید بزنم OnPaint !!

Mahdi.Kiani
چهارشنبه 11 دی 1387, 21:23 عصر
سلام
آن هایی که با on شروع می شوند، رویداد نیستند. بلکه متد هایی هستند که رویداد مورد نظر را raise می کنند.
این متد ها اغلب به صورت protected Virtual تعریف می شوند که کاربری که از کلاسی که رویداد مورد نظر در آن تعریف شده است، ارث بری می کند، بتواند رویداد را overide کند ..

چیزی شبیه به مثال زیر :



public class BaseClass
{
public delegate void MyDelegateEventHandler(object sender, EventArgs e);
public event MyDelegateEventHandler MyEvent;


public BaseClass()
{

}


protected virtual void OnMyEvent(EventArgs e)
{
if (this.MyEvent != null)
{
this.MyEvent(this, e);
}
}
}









public class DrivedClass :BaseClass
{
public DrivedClass()
{
//Constructor
}
protected override void OnMyEvent(EventArgs e)
{
base.OnMyEvent(e);

}
}




موفق باشید