PDA

View Full Version : توضیح مختصر در رابطه با تخصیص رویداد



ordebehesht
پنج شنبه 14 دی 1391, 01:02 صبح
buttonChooseColor.Click += new EventHandler(OnClickChooseColor);

این کد مخصوصا اون (new eve....=+)یعنی چی میشه توضیح بدین به ایروش کد نویسی چی میگن و یه کلی
ممنون میشم

danialafshari
پنج شنبه 14 دی 1391, 01:14 صبح
سلام دوست عزیز
این کد برای ساخت رویداد به وسیله کد نویسی است و علاوه بر این کد باید تابع رو هم بنویسی تا ارور ندهد
مثال :
textBox1.Click += new EventHandler(this.textBox1_click);
بعد این تابع رو هم به صورت دستی می نویسم:
private void textBox1_click(object sender, EventArgs e)
{
MessageBox.Show("Afshari");
}
با کد بالا یک رویداد کلیک با نام click برای textBox1 ساختم

این کد ها در Designer مربوط به فرم هم یافت می شود
موفق باشی

ordebehesht
پنج شنبه 14 دی 1391, 13:35 عصر
مرسی اما یه سوال میشه در مورد پارامترهای درون پارانتز توضیح بدی من یه جا دیدم بجای semder‌از exeption استفاده کده یود

danialafshari
پنج شنبه 14 دی 1391, 15:05 عصر
مرسی اما یه سوال میشه در مورد پارامترهای درون پارانتز توضیح بدی من یه جا دیدم بجای semder‌از exeption استفاده کده یود

سلام دوست عزیز
Sender اینجا صرفا یک متغیر از نوع Object است مانند:

int num1;
string str1;
bool validate;
float sum;

شما می تونی هر نامی برای این بزاری کنترل های C# به صورت پیش فرض با نام sender هستند

private void textBox1_click(object danial, EventArgs afshari)
{
MessageBox.Show("Afshari");
}

موفق باشی

ordebehesht
پنج شنبه 28 دی 1391, 13:40 عصر
سلام این تایپیک برای چند وقت پیشه اما سوالش هنو مونده که چرا ما باید برای یه نمونه ما باید یه رویداد تخصیص بدیم اصلا کی و چه موقع هایی نیاز به این کار داریم

Hajivandian
پنج شنبه 28 دی 1391, 14:29 عصر
سلام،
sender حاوی اشاره گر به شی ایست که اون رویداد رو فراخوانی کرده، در مواقعی که برای چندین شی یک رویداد تعریف می کنید میتونه مورد استفاده قرار بگیره.


چرا ما باید برای یه نمونه ما باید یه رویداد تخصیص بدیم اصلا کی و چه موقع هایی نیاز به این کار داریم

فرض کنید یک شی TextBox روی فرمتون دارید و برای رویداد TextChanged اون یک سری دستورات نوشتید؛ ممکنه در حین کد نویسی بخواین مقدار Text اون رو تغییر بدید، با این عمل رویداد TextChanged اجرا میشه ولی اگر شما تو اون لحظه نخواین این اتفاق بیفته میتونید رویداد مورد نظر رو به این صورت غیر فعال کنید:

text1.TextChanged -= new EventHandler(textBox1_TextChanged);
و پس از تخصیص مقدار دوباره می تونید اون رو به صورت زیر فعال کنید:

text1.TextChanged += new EventHandler(textBox1_TextChanged);
البته این یه مثال از کاربرد هاش بود.

همچنین به وسیله عبارت های لامبدا هم میشه به یک شی رویداد تخصیص داد:

text1.TextChanged += (o,a)=>
{
// دستورات
};

ordebehesht
پنج شنبه 28 دی 1391, 17:37 عصر
میشه کمی بیشتر توضیح بدی



text1.TextChanged += (o,a)=>
{
// دستورات
};

danialafshari
پنج شنبه 28 دی 1391, 17:43 عصر
سلام
شما می تونی از طریق انتخاب رویداد هم کدت رو اجرا بکنی حتما نیاز نیست که رویدادش رو کد نویسی کنی !