PDA

View Full Version : Event



Mojtaba_ss
یک شنبه 16 اردیبهشت 1386, 15:02 عصر
سلام دوستان عزیز
ساخت یک Event توی #C چطوریه؟
مثلا Event کلیک برای Button یا MouseEnter و یا ... کجا و چطور تعریف شدن؟
برای ساخت یک Event کجا و چطور باید نام Event رو تعریف کنیم؟؟؟؟
ممنون!

PC2st
یک شنبه 16 اردیبهشت 1386, 21:21 عصر
کد زیر رو در متد سازنده یا هر جای دیگری قرار بدید:


myButton.Click += new EventHandler( myButton_Click );


و تابعی که برای رخداد کلیک باید اجرا بشه، به شکل زیر پیده سازی میشه.


void myButton_Click( object sender, EventArgs e )
{
// your code here...
}


اگر منظورت از تغییر نام event هون تغییر نام تابعی باشه که در زمان رخداد event اجرا میشه، میشه در کدهای فوق، بجای نام myButton_Click، نام دلخواهتون رو بنویسید.

البته لازم نیست چیزی رو حفظ کنید! اگر خواستی که مثلا برای رخداد MouseEnter کد بنویسی، عبارت زیر رو تایپ کن:


myButton.MouseEnter +=

بعدش اگر دکمه TAB رو بزنید، خودش بقیه کارهاش رو میکنه.

sepelloo
سه شنبه 18 اردیبهشت 1386, 02:41 صبح
در سمت راست برگه property در سر یرگ یک نوار شکسته زرد رنگ هست
روی اون کلیک کن همه evemtha ی مربوط به کنترل انتخاب شده رو لیست می کنه .
روی هر کدوم که دبل کلیک کنی اون event ساخته می شه.
روشی هم که دوستمون گفتند درسته.

Mojtaba_ss
سه شنبه 18 اردیبهشت 1386, 10:58 صبح
من منظورم این نبود.
به طور مثال Button یه ایونت بنام Click داره ،من میخوام یه ایونت دلخواه برای خودم درست کنم
مثلا اینکه برای Buttonهای وبی ایونت MouseEnter و . . . خلق کنم.

Sorenaa_s
سه شنبه 18 اردیبهشت 1386, 12:29 عصر
مراحل زیر رو به ترتیب انجام بده:
1. ساختن EvetArgs شخصی:
2. تعریف Delegate مورد نظر در سطح NameSpace:
3. تعریف Event مورد نظر در Class، از نوع Delegate
4. Call کردن Event





public class MyEventArgs: EventArgs
{
}


public delegate void MyEventHandler( object sender, MyEventArgs e );


public class Myclass
{
public event MyEventHandler MyEvent;
public Myclass()
{
}
public virtual void OnMyEven( MyEventArgs e )
{
if( MyEvent != null )
MyEvent( this, e );
}
}



چند تا نکته:
1. EventArgs شما می تونه کلی Property داشته باشه، مقادیری که شما دوست دارید زمان اتفاق افتادن Event به اونها دسترسی داسته باشید.
2. در صورتیکه EventArgs شما هیچ چیزی بیشتر از System.EventArgs نداشته باشد، و delegate شما هم ورودی دیگری نداشته باشه، می توانید ار تعریف EventArgs و delegate صرفنظر کرده و از EventHandler استفاده کنید :


public event EventHandler MyEvent;

EventHandler دو پلرامتر ورودی دارد: object sender, EventArgs e
3. عبارت event در تعریف Event جدید کاملا جنبه نمایشی دارد، این عبارت فقط برای این است که Visual Studio در لیست Member های این کلاس، در کنار Event شما اون آیکن رعد و برق رو نمایش بده، به همین دلیل اگه عبارت event رو هم نذارید مشکلی پیش نماید:


public MyEventHandler MyEvent;

Mojtaba_ss
چهارشنبه 19 اردیبهشت 1386, 13:27 عصر
دوست عزیز ممنون از پاسختون
ممکنه یه نمونه برام بنویسید یا اگه امکان داره اینجا بزارین؟

Sorenaa_s
پنج شنبه 20 اردیبهشت 1386, 01:04 صبح
همین کد بالا یک مثال ساده و خوبه. ولی اگر لازمه تو یک پروژه ساده اجرا کنم و بفرستم؟

Mojtaba_ss
شنبه 22 اردیبهشت 1386, 07:45 صبح
اگه این کارو انجام بدی ممنون میشم!

Sorenaa_s
شنبه 22 اردیبهشت 1386, 10:20 صبح
از این کد می تونید ایده بگیرید.