PDA

View Full Version : ارتباط بین object ها در vb.net



وحید صابر
دوشنبه 14 شهریور 1384, 11:18 صبح
مثلا تو فرم اولی یه structure تعریف و به متغیرش مقدار دهی کنی. حالا میخوای بری به فرم دومی (frm2.show). در فرم دوم به مقدار اون متغیری که در فرم اول مقداردهی کردی احتیاج داری. این خواسته ی غیر معمولیه؟ میشه یه public تو یه ماژول تعریف کرد.این درست ،ولی اگر نخوام از هیچ متغیر public (یا اصلا'' از ماژول) استفاده کنم چی؟ یعنی کلا'' در مباحث oops این حق رو ندارم کی از تابه یک object به تابع یک object دیگه مقداری ارسال کنم؟

حامد مصافی
دوشنبه 14 شهریور 1384, 11:42 صبح
بدون Public که نمیشه
این متغیر رو در فرم اول به صورت عمومی تعریف کن
در فرم دوم اسم فرم و نقطه و نام متغیر
به همین راحتی
:لبخند:

titbasoft
دوشنبه 14 شهریور 1384, 12:36 عصر
مشکل کجاست؟ تعریف متغیر public چه مشکلی ایجاد می کنه؟

در ضمن به یاد داشته باشید که اگر می خواهید یک متغیر از یک object بین instance های مختلف اون به اشتراک گذاشته بشه (یک فضای حافضه برای آنها اختصاص داده بشه) یا به عبارت دیگر مقدارش حفظ بشه باید از keyword ی shared هم علاوه بر استفاده از scope مورد نیاز (مثلا public) استفاده کنید.
مثال: Public Shared avg As Int16

وحید صابر
دوشنبه 14 شهریور 1384, 15:11 عصر
با تشکر فکر میکنم جوابم رو گرفتم. ولی حالا سوالم رو تکمیل میکنم: فرض این است که با دستور frm2.show() تابع frm2_load() اجراء میشه(اگر فرضم اشتباه است لطفا حتما اصلاح کنید) . در روال معمول برنامه نویسی هنگام فراخوان یک تابع از میان یک تابع دیگر میتوان(گاهی باید) آرگومان هایی را نیز ارسال نمود. میخواهم بدانم میشود از تابع frm2.show() هم ارگومان ارسال کرد ؟ مثلآ frm2.show(xyz)
. آیا میتوان ازfunction override استفاده کرد؟
در صورتی که تمام پاسخ ها مثبت است، لطفا ضمن ارسال پاسخ ، اگر میشود بفرمایید که ایا اصولا این یک تمرین درست برنامه نویسی حرفه ای است یا خیر؟

ممنون

titbasoft
دوشنبه 14 شهریور 1384, 20:52 عصر
آیا میتوان ازfunction override استفاده کرد؟بله به شرطی که در انتهای متدی که خودتون نوشتید متد اصلی (show بدون دریافت پارامتر) صدا بزنید.