object sender و EventArgs e در رویدادها ؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

object sender و EventArgs e در رویدادها ؟

+1 امتیاز
با ســـلام؛|

object sender و EventArgs e در رویدادها چه کاربردی دارند ؟ممنون
سوال شده اسفند 22, 1392  بوسیله ی daniyaltjm (امتیاز 840)   47 88 103
دوباره تگ گذاری شد اسفند 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام.

این دو آرگومان، برای تمام رویدادهای مربوط به اشیا مختلف وجود دارند و شما هر رویدادی (event ) رو که تعریف کنید متناسب با اون رویداد و اون شی این مقادیر متفاوت خواهند بود.

در حالت کلی object تعیین کننده کلاس اون شی هست که قراره براش رویداد مورد نظر تعریف بشه و e هم یکسری خصوصیات از رویداد مورد نظر برای همون شی دراختیارمون قرار میده.

مثلا فرض کنید روی یکی از فرم ها دابل کلیک کنید و رویداد Form1_Load رو فعال کنید. در این مورد object sender به اینصورت خواهد بود که object مشخص میکنه این رویداد (رویداد Load) برای یک فرم (از جنس کلاس Form) هست و sender هم مشخص میکنه که این ارسال کننده Form1 هستش.

حالا فرض بگیرید یه TextBox مثلا TxtName براش رویداد TxtName_TextChanged بخواید تعریف کنید. در این مورد object sender به این صورت خواهد بود که object شما از جنس TextBox (از جنس کلاس TextBox) خواهد بود و sender که اطلاعاتش باید ارسال بشه در اینجا همون TxtName خواهد بود.

در مورد EventArg  که با e مشخص میشه توضیح اضافه اینکه برای بعضی از رویدادهای خاص در یکسری از اشیا، اطلاعات ارزشمندی رو در اختیارمون میذاره.

مثلا برای یک Textbox ما رویدادی داریم به نام KeyDown که زمانی فعال میشه که یک دکمه پایین نگه داشته بشه. در اینجا نام آرگومان به KeyEventArg تغییر پیدا میکنه و آرگومان e بهتون کمک میکنه تا متوجه بشید کاربر چه دکمه ای رو فشار داده :

private void TxtName_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                MessageBox.Show("you press Delete Key");
            }
        }

در کل به این نکته دقت کنید زمانیکه قبل از EventArg کلمه ای بیاد، اینو بدونید که آرگومان e اطلاعات خیلی مفیدی رو درباره رویداد مربوط به اون شی (در مثال بالا رویداد KeyDown از شی TxtName) در اختیارتون میذاره.

پاسخ داده شده اسفند 22, 1392 بوسیله ی veniz2008 (امتیاز 2,083)   1 5 21
انتخاب شد اسفند 22, 1392 بوسیله ی daniyaltjm
...