نمایش نتایج 1 تا 7 از 7

نام تاپیک: صدا زدن يك رويداد از داخل يك رويداد ديگه

  1. #1

    صدا زدن يك رويداد از داخل يك رويداد ديگه

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

  2. #2
    کاربر دائمی آواتار SMRAH1
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    مشهد
    پست
    884

    نقل قول: صدا زدن يك رويداد از داخل يك رويداد ديگه

    سلام

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

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

  3. #3

    Smile نقل قول: صدا زدن يك رويداد از داخل يك رويداد ديگه

    سلام ، يه راه ساده وجود داره !!!! ميتونيد يك متغير bool با مقدار اوليه False تعريف كنيد ،

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

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

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

  4. #4

    نقل قول: صدا زدن يك رويداد از داخل يك رويداد ديگه

    نقل قول نوشته شده توسط SMRAH1 مشاهده تاپیک
    سلام

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

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

  5. #5

    نقل قول: صدا زدن يك رويداد از داخل يك رويداد ديگه

    مثلا یک دکمه به نام Button1 دارین به دو طریق می تونین کلیک کردن اون رو انجام بدین فراخوانی رویداد Button1_Click و صدا کردن متد Button1.PerformClick که راه دوم پیشنهاد میشه
    آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
    آن لحظه،
    لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .

    برنولی

  6. #6

    نقل قول: صدا زدن يك رويداد از داخل يك رويداد ديگه

    نقل قول نوشته شده توسط salar_cpp_cs مشاهده تاپیک
    سلام ، يه راه ساده وجود داره !!!! ميتونيد يك متغير bool با مقدار اوليه False تعريف كنيد ،

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

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

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

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

    با تشکر

  7. #7
    کاربر دائمی آواتار SMRAH1
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    مشهد
    پست
    884

    نقل قول: صدا زدن يك رويداد از داخل يك رويداد ديگه

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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •