تبلیغات
برنامه نویسی شی گرا در سی شارپ - آموزش Delegates و Events در C

برنامه نویسی شی گرا در سی شارپ

پنجشنبه 24 تیر 1389

آموزش Delegates و Events در C

نویسنده: Programmer   طبقه بندی: آموزش، 

تفاوت میان delegate ,Event:

در زیر چند نمونه از تفاوت های میان این دو را ذکر کرده ام و در ادامه با یک مثال نحوه پیاده سازی آن را نشان خواهم داد:

Delegates

Events

یک تابع اشاره گر است که می تواند آدرس هر تابع دیگری را ذخیره کند

یک آرایه از Delegates  ها می باشند

پلی را برای ارتباط بین کنترل ها وتوابع ایجاد میکند

 

فقط یک تابع را می توانند صدا بزنند

 

 

 

 

مثال: فرض کنید دو فرم داریم یکی با نام Parent  . دیگری با نام Child  حال میخواهیم ترتیبی تثر دهیم تا هنگامی که کاربر در روی دکمه ای در روی فرم child  کلیک می کند رنگ پشت زمینه فرم Parent  تغییر کند ولی این کار به چه نحوی امکان پذیر است زیرا فرم child  از وجود فرم parent  با شی از Parent  با خبر نیست :

راه حل استفاده از Delegate : بدین معنی که شما اشاره گری را با استفاده از delegate  هب بین فرم Parent  و child ایجاد می کنید :

مراحل کار :

در محیط ویژوال استودیو یک پروژه ویندوزی ایجاد نمایید و در فرم با نامهای Parent  و child  به آن اضافه کند حال در فرم parent  یک button  اضافه کند تا با استفاده از آن فرم Child نمایش داده شود

حال در فرمchild  ، یک  button  اضافه کنید تا با کلیک بر روی آن بتوانیم رنگ فرم Parent  را تغییر دهیم . بر روی فرم Child  دوبار کلیک کنید و کد های زیر را در آن وارد نمایید:

 

public delegate void changebackground(Color color);

public event changebackground changebackcolordelegate;

 

حال بر روی دکه خود در همین فرم(Child) دوبار کلیک کنید  و کد های زیر را در آن وارد کنید

        private void button1_Click(object sender, EventArgs e)

        {

            changebackcolordelegate(Color.Yellow);

         

      

 }

 

به فرم Parent  باز گردید و دوبار روی فرم کلیک کنید تا محیط کد نویسی آن باز شود

تابع زبر را درآن وارد کنید:

   private void set_color(Color c)

        {

            this.BackColor = c;

        }

 

حال  بر روی دکمه  خود دوبار کلیک کنید تا محیط کد نویسی آن باز شود و کد های زیر را درآن وارد نمایید

        private void button1_Click(object sender, EventArgs e)

        {

            child frm = new child();

            frm.Show();

            frm.changebackcolordelegate += new child.changebackground(set_color);

        }

با اجرای این برنامه متوجه خواهید شد که وقتی بروی دکمه فرم Child  کلیک می کنید رنگ پشت زمینه فرم Parent  به صورت زرد در خواهد آمد

 

 

آمار وبلاگ

  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
  •