اطلاعیه

Collapse
No announcement yet.

ایجاد رویداد با delegate در C#

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ایجاد رویداد با delegate در C#

    سلام. من تو C# یک کلاس دارم که میخوام یک رویداد براش تعریف کنم.
    میدونم که اینکار رو باید با delegate انجام بدم. اما نمیدونم چجوری.
    میتونید راهنماییم کنید؟

    #2
    پاسخ : ایجاد رویداد با delegate در C#

    سلام آقای امیر . م

    الان مدتها از تاریخ نوشته بالا گذشته . و هنوز متاسفانه کسی پاسخی به شما نداده . :redface:

    احتمالا تا حالا مشکلتون رو حل کردید ولی اگه ممکنه اینجا مطرحش کنید تا ما هم بدونیم .

    - به دنبال فرصت عمري تباه کردم ! فرصت جواني ام بود من اشتباه کردم .

    دیدگاه


      #3
      پاسخ : ایجاد رویداد با delegate در C#

      بله مشکلم رو تقریبا فرداش حل کردم. به این صورت :
      تو کلاسی که میخوام event رو ایجاد کنم این کد رو مینویسم.
      کد:
          public delegate void EventClickEffect();
          public event EventClickEffect ClickEffect;
      با اینکار میایم event به نام ClickEffect رو از نوع EventClickEffect تعریف میکنیم. حالا تو تابعی که قراره این Event عمل کنه اون رو Call میکنیم.
      فرض کنید که تو این کلاس یه تایمر یا به کلید داریم و میخوایم هر وقت کلید فشرده شد این event کار کنه یا اصطلاحا raise بشه.
      تو روتین فرضا Click کلید این رو Call میکنیم.
      کد:
          private void btnKey_Click(object sender, EventArgs e)
          {
            ClickKey();
          }
      حالا تو کلاسی که میخوایم از این کلاس استفاده کنیم ، مثل فرم ، بعد از گرفتن Object از این کلاس با نوشتن خطی مثل زیر کار رو تموم میکنیم.
      کد:
            clsKeyFrame tmp = new clsKeyFrame();
            tmp.ClickKey += new clsKeyFrame.EventClickKey(tmp_ClickKey);
      void tmp_ClickKey()
          {
            throw new NotImplementedException();
          }

      دیدگاه


        #4
        پاسخ : ایجاد رویداد با delegate در C#

        ممنون از پاسختون
        اگه امکان داره یه مثال قابل لمس فقط با توضیح بدون کد برام بزنید . :applause:
        - به دنبال فرصت عمري تباه کردم ! فرصت جواني ام بود من اشتباه کردم .

        دیدگاه


          #5
          پاسخ : ایجاد رویداد با delegate در C#

          ببینید یه موقع هست که شما میخوای از یک کلاس که نوشتی تو کلاسها و فرمهای دیگه استفاده کنی.
          در ضمن میخوای وقتی اتفاق خاصی تو این کلاس افتاد ، که میتونه فشرده شدن یک کلید باشه یا تغییر متن یک textbox باشه یا هرچی دیگه ، وقتی این اتفاق افتاد شما تو فرمت یا هرجا دیگه که از این کلاس object گرفتی مطلع بشی.
          اینجا باید از رخداد یا Event استفاده کنی. event تو تمام object ها در مواقع مختلف اصطلاحا raise میشه.
          مثلا وقتی شما تو یه فرم از Button یک object میگیری و میاریش رو فرمت ، میتونی بگی که فرضا وقتی روش کلیک شد باید تابع مثلا btnTest_OnClick رو اجرا کنه و توی این تابع مثلا یه MessageBox میزاری یا هرچیز دیگه.
          این میشه مفهوم Event.
          حالا شما میخوای Event رو تو کلاس خودت پیاده کنی تا هر وقت یه اتفاق مشخصی توش رخ داد، شما توی فرم یا کلاست متوجه بشی و کاری رو که میخوای انجام بدی.
          روش کد نویسیش هم که تو پست قبلی نوشتم.
          موفق باشی.

          دیدگاه


            #6
            پاسخ : ایجاد رویداد با delegate در C#

            :applause:
            ممنون از توضیح کاملتون و مرسی که وقت گذاشتین .
            - به دنبال فرصت عمري تباه کردم ! فرصت جواني ام بود من اشتباه کردم .

            دیدگاه

            لطفا صبر کنید...
            X