PDA

View Full Version : صادر شدن یک event از داخل یک کلاس در visual C sharp



pidexx
شنبه 27 اردیبهشت 1393, 10:37 صبح
می خوام هر وقت مقدار یک متغیر توی یکی از متدها تو کلاسی که نوشتم برار با مقدار خاصی شد کلاس یه event صادر کنه
میشه همچین کاری کرد؟؟؟
راهنمایی لطفا؟؟؟؟
vc# باشه لطفا.

hamid_hr
شنبه 27 اردیبهشت 1393, 11:15 صبح
public event xChanged ChangeXValue;
public delegate void xChanged(object source, EventArgs e);
int tmpX;
public int x
{
get
{
return tmpX;
}
set
{
tmpX = value;
if (value == 10)
{
if (ChangeXValue != null)
ChangeXValue(tmpX, EventArgs.Empty);
}


}
}


خب فک کنین x اون متغییر شماست

pidexx
یک شنبه 28 اردیبهشت 1393, 18:02 عصر
public event xChanged ChangeXValue;
public delegate void xChanged(object source, EventArgs e);
int tmpX;
public int x
{
get
{
return tmpX;
}
set
{
tmpX = value;
if (value == 10)
{
if (ChangeXValue != null)
ChangeXValue(tmpX, EventArgs.Empty);
}


}
}


خب فک کنین x اون متغییر شماست
hamid_hr دستت درد نکنه.اگه امکانش هست کدش را یک کم توضیح میدی!؟

winner1
یک شنبه 28 اردیبهشت 1393, 19:19 عصر
ببین عامل ها (delegate) در واقع یه نوع اشارگر به فراخوانی توابع هستند و رویداد ها بر اساس عامل ها تعریف میشن تو عامل که مشخص میشه متدی که به رویداد شما اضافه میشه خروجیش و ورودیش از چه نوعی و چه تعداد ورودی داشته باشه

pidexx
یک شنبه 28 اردیبهشت 1393, 19:37 عصر
ببین عامل ها (delegate) در واقع یه نوع اشارگر به فراخوانی توابع هستند و رویداد ها بر اساس عامل ها تعریف میشن تو عامل که مشخص میشه متدی که به رویداد شما اضافه میشه خروجیش و ورودیش از چه نوعی و چه تعداد ورودی داشته باشه
یعنی توی خط زیر:
public delegate void xChanged (objectsource, EventArgs e)
در واقع داره میگه که یک تابع داریم به اسم xChanged که وقتی event صادر شد این مند اجرا میشه. و این متد دو تا پارامتر داره و خروجی نداره
درست فهمیدم؟؟؟؟
اگر میشه خط 1 و 16 را هم توضیح بدبد.
درباره پارامتر های متد هم توضیح بدبد.
با تشکر

winner1
یک شنبه 28 اردیبهشت 1393, 20:39 عصر
نه دوست من ببین مثلا من میگم


public delegate int MyEventHandler(int x,int y);

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


public event MyEventHandler EventCalled;

حالا هر متدی که من بخوام به به رویداد EventCalled اضافه کنم باید یه خروجی int و دوتا وردی int داشته باشه
مثلا


publict int Sum(int number1,int number2)
{
return number1+number2;
}
public void AddMethodToEvent()
{
MyEventCalled+=Sum;
}