PDA

View Full Version : سوال: حرفه اي: چرا موقع ايجاد يك Inherited Control مثل يك Textbox فقط عددي، به جاي نوشتن EventHandler ....



odiseh
سه شنبه 11 خرداد 1389, 09:28 صبح
سلام
چرا موقع ايجاد يك Inherited Control مثل يك Textbox فقط عددي، به جاي نوشتن EventHandler بايد يك Method بنويسيم؟

فرض كنيد كه داريم همون مثال بالا يعني Textbox فقط عددي رو مي نويسيم..... خوب پس به نظر مياد كه بايد بريم event مربوط به Keypress اون Textbox رو براش يك Handler بنويسيم. اما جالبه كه جديداً يكي از دوستان سايت برنامه نويس گفتند كه به جاي اون بايد method اي به نام OnKeyPress رو بنويسيم؟!!!

كسي علت اين رو ميدونه؟

alireza_s_84
سه شنبه 11 خرداد 1389, 10:46 صبح
سلام
چرا موقع ايجاد يك Inherited Control مثل يك Textbox فقط عددي، به جاي نوشتن EventHandler بايد يك Method بنويسيم؟
فرض كنيد كه داريم همون مثال بالا يعني Textbox فقط عددي رو مي نويسيم..... خوب پس به نظر مياد كه بايد بريم event مربوط به Keypress اون Textbox رو براش يك Handler بنويسيم. اما جالبه كه جديداً يكي از دوستان سايت برنامه نويس گفتند كه به جاي اون بايد method اي به نام OnKeyPress رو بنويسيم؟!!!
كسي علت اين رو ميدونه؟
لابد منظورشون این بوده که متد رویداد OnKeyPress رو Override کنیم. خب ایونت هم خودش یک نوع متده دیگه و تفواتی که با متد داره اینه که شما متد رو خودت باید صذا بزنی ولی ایونت بر حسب وقایع خود به خود اجرا میشه.
ضمنا Handler که برای یک ایونت نوشته میشه خودش یک متد هست.
شما با کجای این قضیه مشکل داری؟

odiseh
سه شنبه 11 خرداد 1389, 10:53 صبح
لابد منظورشون این بوده که متد رویداد OnKeyPress رو Override کنیم.

ضمن تشكر، در ليست event هاي يك textbox ،
event اي به نام keypress وجود داره و در نسخه هاي قبلي .net هم بوده. اين Onkeypress ديگه از كجا اومد؟ جديده؟ ميشه لطف كني و يه كم بيشتر توضيح بدين؟

exlord
سه شنبه 11 خرداد 1389, 11:53 صبح
ضمن تشكر، در ليست event هاي يك textbox ،
event اي به نام keypress وجود داره و در نسخه هاي قبلي .net هم بوده. اين Onkeypress ديگه از كجا اومد؟ جديده؟ ميشه لطف كني و يه كم بيشتر توضيح بدين؟
Onkeypress یه event نیست بلکه یه متده که eventhandler مربوط به keypress در کلاس پدر اونو تعریف کرده ..... حالا شما میتونی یا این متد رو ovverride کنی یا خودت یه Handeler جدید تعریف کنی برا event ای که میخوای .......

odiseh
سه شنبه 11 خرداد 1389, 12:33 عصر
Onkeypress یه event نیست بلکه یه متده که eventhandler مربوط به keypress در کلاس پدر اونو تعریف کرده .....

چطوري مي تونيم اين رو كه در كلاس پدر تعريف كرده متوجه بشيم و سوال دوم من اينه كه اين مدل، قبلاً هم بوده (2005 ) يا جديداً اضافه شده؟ فرقش با اينكه Keypress رو خودمون براش Handler بنويسيم چيه؟


راستي، مگه جديدا به ازاء هر event اي مثل همين KeyPress ،
eventHandler اون هم به صورت متد وجود داره؟

exlord
چهارشنبه 12 خرداد 1389, 08:48 صبح
چطوري مي تونيم اين رو كه در كلاس پدر تعريف كرده متوجه بشيم و سوال دوم من اينه كه اين مدل، قبلاً هم بوده (2005 ) يا جديداً اضافه شده؟ فرقش با اينكه Keypress رو خودمون براش Handler بنويسيم چيه؟


راستي، مگه جديدا به ازاء هر event اي مثل همين KeyPress ،
eventHandler اون هم به صورت متد وجود داره؟

تو vs تو کلاس فرزند بنویس override یه space بزن همه متد هایی که قابل override شدن هستن رو میاره ....
نخیر اینا از همون زمان خلقت بودن اینا ..... هیچ فرقی نداره فقط وقتی override میکنی کدی که مینویسی یه مرحله کمتره ..... ولی اگر تو کلاس پدر توی این متد چیزی نوشته شده اون دیگه اجرا نمیشه .....