PDA

View Full Version : حرفه ای: Delegate for Custome Method



simple
شنبه 06 مهر 1392, 09:04 صبح
سلام دوستان

براي فراخواني يك متد از يك صفحه ديگه بايد از delegate ها استفاده كنم.
اما اگر متد مذكور يك TextBox يا Button نباشه از چه راهي ميشه بهش دسترسي پيدا كرد؟

براي مثال :
در يك پروژه از يك صفحه اصلي كه در آن يوزركنترلها با قابليت دايناميك لود ميشوند. سوال اينجاست كه چگونه از درون يكي از اين يوزركنترلها، تابعي رو كه تعدادي پارامتر ورودي دارد و در صفحه اصلي تعريف شده را فراخواني كنيم؟

اميدوارم منظورم رو رسونده باشم.

anvar
شنبه 06 مهر 1392, 10:14 صبح
در برنامه نویسی شی گرا کلا کلاس ها برای همین ساخته شده اند. شما اگر موجودیت یا اشیاء مورد نظرت رو در یک کلاس تعریف کنی می تونی اون رو هر جایی که خواستی استفاده کنی. یعنی تابع مورد نظرت که در صفحه اصلی تعریف کردی در یک کلاس مجزا تعریف کن و هر جای دیگری که خواستی استفادش کن

لینک زیر (http://www.c-sharpcorner.com/uploadfile/daniel.clark/basics-of-creating-and-using-classes-in-C-Sharp/) می تونه برای درک مفاهیم بالا مفید باشه.

mehdi.mousavi
شنبه 06 مهر 1392, 14:34 عصر
سلام دوستان براي فراخواني يك متد از يك صفحه ديگه بايد از delegate ها استفاده كنم. اما اگر متد مذكور يك TextBox يا Button نباشه از چه راهي ميشه بهش دسترسي پيدا كرد؟ براي مثال : در يك پروژه از يك صفحه اصلي كه در آن يوزركنترلها با قابليت دايناميك لود ميشوند. سوال اينجاست كه چگونه از درون يكي از اين يوزركنترلها، تابعي رو كه تعدادي پارامتر ورودي دارد و در صفحه اصلي تعريف شده را فراخواني كنيم؟ اميدوارم منظورم رو رسونده باشم.

سلام.
UserControl ها Property ای به اسم Parent دارن که Reference به Page اصلی رو بهتون میده. اونو میتونید به کلاس مورد نظر Cast کنید و تابع public مورد نظرتون رو اونجا Call کنید. اما این کارو انجام ندید. چون بزودی با یه Spaghetti Code مواجه میشید. شما می تونید بر عکس عمل کنید. یعنی همه UserControl های مورد نظرتون رو از کلاسی که خودتون میسازید و از UserControl درایو میشه، Derive کنید. اینطوری میدونید، همه اون UserControl ها، اینترفیس IWhatever رو که متود ها و Property های مورد نظرتون رو Support میکنه، پیاده سازی می کنن. پس کنترل میتونه از بیرون رخ بده، یعنی هر وقت لازم شد، از طریق اون Interface میشه به بیرون اطلاع داد که فلان واقعه رخ داده، سپس کلاس Control کننده میتونه روند مورد نظرش رو دنبال کنه...

موفق باشید.

simple
یک شنبه 07 مهر 1392, 16:34 عصر
ضمن تشکر از دوستان و جلوگیری از اتلاف وقت یک نمونه از ساختار پیاده شده رو در ضمیمه قرار داده ام. با شرح کافی. امیدوارم با دیدن سورس متوجه سوال من بشوید.

دانلود سورس کد (http://s1.picofile.com/file/7954384943/UserControls.zip.html)