PDA

View Full Version : ساخت Event برای یک Properties جدید در یک UserControl



hassan razavi
دوشنبه 03 دی 1386, 09:57 صبح
سلان دوستان
فرض کنید یک UserControl رو ایجاد کردیم.
یک Properties جدید بنام HeaderName که Read/Writeable هم هست براش ایجاد کردیم.
حالا می خواهیم یک Event بنام OnHeaderNameChange بسازیم که وقتی که مقدار خاصیت HeaderName عوض میشه ، این Event فعال بشه.

در User Control مراحل زیر انجام شده :


public delegate void HeaderChang();
public event HeaderChang OnHeaderNameChange ;


تا اینجا مشکلی نیست و Event مورد نظر به کنترل اضافه شده (با اضافه کردن این کنترل در یک پروژه WinApp ، در لیست رویدادها این Event اضافه شده)

اما مسئله در محل قراردادن فرمان fire برای این Event در UserControl میباشد.
من کد OnHeaderNameChange() رو در متد set مربوط به Properties نوشتم. یعنی با تغیر این خاصیت و اجرای متد Set ، رویداد مورد نظر fire می شود.

ولی متاسفانه خطای Object reference not set to an instance of an object مواجه میشم.
در حالی که وقتی که مثلا یک Button به UserControl اضافه می کنم و این Event رو در رویداد Click آم Bottun فعال میکنم ، مشکلی پیش نمیاد.

مرسی از راهنمائیتون

hassan razavi
دوشنبه 03 دی 1386, 11:24 صبح
با قرار دادن خط مربوط به Rise کردن رویداد OnHeaderNameChange در یک try/catch مشکل ماست مالی شد. دلیلش هم فکر کنم بخاطر مقدار دهی شدن اولیه Properties باشه. چرا و راه درست پیاده سازی این رویداد رو نمی دونم.



Private String headerName ;
public string HeaderName
{
get {
return headerName;
}
set {
headerName= value;
try
{
OnHeaderNameChange();
}
catch { }
}
}

اَرژنگ
دوشنبه 03 دی 1386, 14:31 عصر
Private String headerName ;
public string HeaderName
{
get {
return headerName;
}
set {
headerName= value;
if (OnHeaderNameChange!= null )
{
OnHeaderNameChange();
}
}
}