PDA

View Full Version : سوال: EventHandler



amin_mehranfar2000
شنبه 11 مهر 1388, 18:05 عصر
این کلاس وظیفه اش چیست وکجاها کاربرد دارد؟

mahdi_7610
شنبه 11 مهر 1388, 22:57 عصر
وقتی شما روی یک دکمه کلیک میکنید ، کلیک کردن روی دکمه یک رویداد یا Event هستش که منجر به انجام یک عملی میشه .
اگه توی پنجره propertise نگاه کنید توی دات نت برای کنترلها رویدادهایی در نظر گرفته شده که علاوه بر اونها ما خودمون هم میتونیم رویدادهایی را تعریف کنیم .

ما برای تعریف رویدادها به یک EventHandler نیاز داریم .

در کل EventHandler دلیگیت هایی هستند که تعیین میکنند برای هر رویداد چه متد هایی باید اجرا شوند .

مثلا فرض کن برای یک Button یک رویداد Click تعریف شده است . یعنی با کلیک کردن روی باتن عملی انجام شود . برای همین رویداد کلیک یک EventHandler نوشته شده است .

ProWorld
سه شنبه 26 شهریور 1392, 10:29 صبح
اگر ممکنه نحوه تعریف و استفاده از EventHandler رو در C# توضیح بده؟

farhad.k.t
سه شنبه 26 شهریور 1392, 11:17 صبح
button1.Click += new EventHandler(button1_click);

private void button1_click(object sender,EventArgs e)
{

}

ProWorld
سه شنبه 26 شهریور 1392, 11:58 صبح
با تشکر از Farhad.k.t حال اگر بخواهیم بعد از ایجاد یک شئ در زمان اجرای برنامه به ابجکت های ایجاد شده روی داد کلیک متفاوت را اختصاص دهیم چه با ید کرد؟
به طور مثال:
با کلیک بر روی فرم چند باتن ایجاد کرده و در زمان کلیک روی باتن ها هر باتن یک پیام مبنی بر نام همن باتن بدهند.
با عرض پوزش از اینکه شاید سولاتم به نظر تون ساده یا چرت و پرت بیاد و لی خب چه کنیم تازه کاریم دیگه.... ؟:)

مثال کدی که برای ایجاد باتن نوشتم:



int i = 1;
private void Form1_MouseClick(object sender, MouseEventArgs e)
{

Button btn = new Button();
btn.Location = new Point(e.X,e.Y);
btn.Name = "button3" + i;
btn.Text = "button3";
this.Controls.Add(btn);
i++;
}

farhad.k.t
سه شنبه 26 شهریور 1392, 12:27 عصر
ببخشید کد اصلاح شد:

i را به صورت سراسری تعریف کنید و از کد زیر استفاده کنید:

public void Form1_MouseClick(object sender, MouseEventArgs e)
{
Button btn = new Button();
btn.Click += new EventHandler(btn_click);
btn.Location = new Point(35, i * 35 + 15);
btn.Name = string.Format("button{0}", i);
btn.Text = string.Format("button{0}", i);
this.Controls.Add(btn);
i++;
}

و زیربرنامه مربوط به Event را اضافه کنید:

private void btn_click(object sender,EventArgs e)
{
MessageBox.Show(this.ActiveControl.Name );
}