PDA

View Full Version : سوال: صدا زدن يك رويداد از داخل يك رويداد ديگه



saeen
شنبه 30 شهریور 1387, 13:09 عصر
سلام
ميخوام وقتي بر روي يك دكمه توي فرم كليك مي كنم رويداد كليك فرم اجرا بشه، آرگومانهاي رويداد فرم را چي بايد تعريف كنم. (منظورم اين دوتاست: object sender, EventArgs e)
ممنون

SMRAH1
شنبه 30 شهریور 1387, 15:51 عصر
سلام

معمولا به جای sender مقدار null . بجای EventArgs مقدار

new EventArgs()
فرستاده می شه.البته اگر از این مقادیر در رویداد مذکور استفاده می کنید،حتما باید مقادیر مناسبی برای آن ها ارسال کنید.(این بستگی به پیاده سازی رویداد مقصد دارد).
البته برخی رویداد ها را به شکل غیر مستقیم هم می توان فعال کرد.برای مثال رویداد click دکمه را به متد PerformClick همان کلید یا رویداد به روز رسانی شکل ظاهری فرم را با متد invalidate فرم و ....

Salar Ashgi
شنبه 30 شهریور 1387, 16:28 عصر
سلام ، يه راه ساده وجود داره !!!! ميتونيد يك متغير bool با مقدار اوليه False تعريف كنيد ،

بعد هر زمان روي اون باتن مورد نظر كليك شد ، متغير رو True ، كنيد ، بعد تو رويداد كليك

فرم ، شرط رو چك كنيد ، كه متغير True بود ( كه در صورتي اين كار انجام ميشه ، كه روي

باتن كليك شده باشه ) ، هر كاري رو كه خواستيد انجام بديد !!!

saeen
یک شنبه 31 شهریور 1387, 08:35 صبح
سلام

معمولا به جای sender مقدار null . بجای EventArgs مقدار

new EventArgs()
فرستاده می شه.البته اگر از این مقادیر در رویداد مذکور استفاده می کنید،حتما باید مقادیر مناسبی برای آن ها ارسال کنید.(این بستگی به پیاده سازی رویداد مقصد دارد).
البته برخی رویداد ها را به شکل غیر مستقیم هم می توان فعال کرد.برای مثال رویداد click دکمه را به متد PerformClick همان کلید یا رویداد به روز رسانی شکل ظاهری فرم را با متد invalidate فرم و ....

ببخشيد ، ميشه در مورد قسمت دوم PerformClick بيشتر توضيح بدين؟ يا يه مثال بزنين
ممنون

razavi_university
یک شنبه 31 شهریور 1387, 10:05 صبح
مثلا یک دکمه به نام Button1 دارین به دو طریق می تونین کلیک کردن اون رو انجام بدین فراخوانی رویداد Button1_Click و صدا کردن متد Button1.PerformClick که راه دوم پیشنهاد میشه

h.jaza
یک شنبه 31 شهریور 1387, 14:14 عصر
سلام ، يه راه ساده وجود داره !!!! ميتونيد يك متغير bool با مقدار اوليه False تعريف كنيد ،

بعد هر زمان روي اون باتن مورد نظر كليك شد ، متغير رو True ، كنيد ، بعد تو رويداد كليك

فرم ، شرط رو چك كنيد ، كه متغير True بود ( كه در صورتي اين كار انجام ميشه ، كه روي

باتن كليك شده باشه ) ، هر كاري رو كه خواستيد انجام بديد !!!
فکر نمی کنم این اصلا راه اصولی باشه، همون راهی که SMRAH1 گفته، درسته و البته راجع بهش می تونم بگم که پارامتر دوم رو هم نیازی نیست حتما یه ()new EventArgs بهش بفرستیم چون در اینجا ما صرفا می خواهیم رویداد رو فراخوانی بکنیم، در نتیجه با null فرستادن بهش هم، هیچ مشکلی پیش نمیاد.

ضمنا razavi_university جان اگر راجع به چرایی بهتر بودن PerformClick توضیح بدین، ممنون میشم.

با تشکر

SMRAH1
یک شنبه 31 شهریور 1387, 15:42 عصر
معمولا وقتی دکمه ای کلیک می شود ممکن است اتفاقات دیگری (به غیر از رویداد هاییی که ما معرفی کرده ایم) را فراخوانی کند.در واقع PerformClick باعث تحریک دکمه و ایجاد رویداد Button_click می شود که در نتیجه تمام متدهای ضمیمه شده به این رویداد اجرا می شوند.(از جمله متدهایی که در base کلاس هست).همچنین در مواردی که ممکن است به dalegate رویداد click،چند متد را الصاق کرده باشیم،با تحریک PerformClick،تمام آنها یکجا فراخوان می شود ،در حالی که اگر بخواهیم همین را برنامه نویسی کنیم باید تک تک متد های رویداد را فراخوانی کنیم.