PDA

View Full Version : حرفه ای: مشکل با Event Handler



peymannaji
یک شنبه 20 دی 1388, 10:59 صبح
با سلام

من یک Event برای یک یوزر کنترل ایجاد کردم :



public event EventHandler<CalenderEventArgs> UpdateScheduler;
public class CalenderEventArgs : EventArgs
{
public Folder Folder { get; set; }
public DateTime Time { get; set; }
}
private void OnSelectedFolderDateChanged()
{
if (SelectedFolder != null && IsPostBack)
UpdateScheduler(this, new CalenderEventArgs { Folder = SelectedFolder, Time = SelecteTime });
}



اما به این خط که میرسه ارور Object not reference ... میده و میگه UpdateScheduler ، نال است . مشکل از چی میتونه باشه ؟ چون مقادیر پاس داده شده null نیست همه چیز درسته .


UpdateScheduler(this, new CalenderEventArgs { Folder = SelectedFolder, Time = SelecteTime });

moharrami
یک شنبه 20 دی 1388, 11:28 صبح
شما باید یه delegate تعریف کنید بعد تو برنامه تون که این یوزر کنترل رو دارید یه متد داشته باشید که امضای این delegate رو داشته باشه. البته event شما هم باید از نوع این delegate تعریف شده باشه بعد متد سمت برنامه رو باید اضافه کنید به این event:

userControl1.event1+=this.methode1(eventarge e);البته چون اغلب اوقات هندل کردن یه event توسط برنامه نویس اختیاریه تو raise کردن اون باید چک کنی که null نباشه

if (UpdateScheduler != null )
UpdateScheduler(this, new CalenderEventArgs { Folder = SelectedFolder, Time = SelecteTime });

peymannaji
یک شنبه 20 دی 1388, 13:02 عصر
ممنون جناب محرمی . لازم به ذکره که همین کدهایی که نوشتم داره تو برنامه یه جای دیگه جواب میده . حالا همین کدها رو من تو یه پروژه استفاده کردم با مشکل روبرو شده .

moharrami
یک شنبه 20 دی 1388, 18:25 عصر
شما اون event رو تو جایی که user Control رو نمونه گرفتید ، هندل کردین؟
اینجا (http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx)و اینجا (http://www.codeproject.com/KB/cs/event_fundamentals.aspx)رو ببینید