مشاهده نسخه کامل
: کار با فرم ها و دسترسی به المنتهای form1 از طریق form2
as13851365
16-01-2011, 11:40
سلام و خسته نباشید
مدتی هست که می خواستم سی شارپ یاد بگیریم از آنجایی هم که من قبلا دلفی کار می کردم هنگام کار با سی شارپ به مشکلاتی برخورد کردم مثلا :
1 ) دو تا فرم داریم به اسم form1 و form2 که فرم یک فرم اصلی برنامه می باشد
روی form1 یک دکمه قرار دادم و می خوام با زدن آن form2 نمایش داده بشه ( یه سری کد پیدا کردم ولی ... )
2 ) از طریق form1 می خواستم مقدار textbox موجود در form2 رو داشته باشم از چه روشی باید استفاده کنم ؟ (بعبارتی می خواستم از مقدادیر موجود در فرم ها به صورت اشتراکی استفاده کنم یعنی از مقدارهای وارد شده در المنتهای form1 در فرم های دیگه استفاده کنم ولی کدی پیدا نکردم)
as13851365
19-01-2011, 12:17
فکر نکنم جای این تایپیک رو اشتباهی ایجاد کرده باشم :10:
نمی دونم سوالم خیلی خیلی ساده بود که دوستان قابل ندونستن جواب بدن یا !؟!؟ :11:
من دلفی کار می کنم و مشکلی هم باهاش ندارم فقط می خواستم با سی شارپ هم کار کنم که در قدم اول با این مشکل مواجه شدم
نمی خوام آموزش دلفی بدم ولی :
در دلفی شما به راحتی دو تا فرم انتخاب می کنی و نام یونیت آنها را در همدیگه uses می کنی و بعد به راحتی می تونی ازشون استفاده کنی
بعنوان مثال :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا من معادل این رو به زبان سی شارپ می خوام
البته جستجو کردم و کلی کد در این باره پیدا کردم ولی زیاد ویژوالی نبود یعنی باید فرم رو تعریف می می ساختی در صورتی که من نمی خوام فرم رو بسازم می خوام فقط فراخوانیش کنم ( البته شاید دوستان بگن که تا زمانی که فرمی ساخته نشده نمی تونی فراخوانیش کنی ولی می خوام این کار به صورت اتوماتیک یا هنگام نمایش فرم1 فرم دوم ساخته بشه ولی مخفی باشه ... قاطی کردم :2: )
اگه به کدی که به زبان دلفی گذاشتم دقت کرده باشید اونجایی که به رنگ آبی مشخص کردم form2 رو در برنامه uses ( یا به عبارتی مورد استفاده ، معرفی و ... ) کردم و در قسمت بعدی که به رنگ آبی انتخاب شده به سادگی با فراخوانی متد show فرم مربوطه را نشان می دم
در قسمتی که به رنگ قرمز مشخص کردم ( از آنجایی که form2 در برنامه فراخوانی شده ) به راحتی می تونم به المنتهای فرم دوم از طریق فرم اول دسترسی داشته باشم و مقدار آنها را دستکاری کنم
کل این کار ها در دلفی به سادگی انجام می شه ولی در سی شارپ برای مورد اول که باید فرم رو بسازیم
و برای مورد دوم من کلی چیزی نتونستم پیدا کنم
حالا اگه دوستان لطف کنند کمی راهنمایی کنن خیلی ممنون می شم
as13851365
21-01-2011, 13:22
من دو تا نمونه برنامه در این تایپیک قرار می دم که یکی به زبانی دلفی می باشد و یکی به زبان سی شارپ
هر دو برنامه کار یکسانی انجام می دن ولی برنامه دلفی کار می کنه و برنامه سی شارپ نه :11:
بعبارتی من با ساخت فرم در سی شارپ مشکل دارم یعنی نمی شه فرم رو یک بار ساخت و همیشه از آن در همه جای برنامه استفاده کرد ؟
دانلود برنامه به زبان دلفی با اندازه 150 کیلوبایت
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دانلود برنامه به زبان سی شارپ به اندازه 15 کیلوبایت
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه دوستان یه زحمتی بکشن یه توضیحی بدن خیلی خوب می شه
هر چی توی اینترنت جستجو کردم همه هر جا که نیازی به فرم داشته باشن فرم رو از نو می سازن در صورتی که من نمی خوام اینجوری باشه می خوام یک بار فرم ساخته بشه و در همه جای برنامه ( تمام فرم ها ) بشه ازش استفاده کرد
اگه به مثال دلفی توجه کنید دقیقا برابر مثال سی شارپ است با این تفاوت که دلفی کار می کنه و سی شارپ کار نمی کنه
( به صورت سرسری یه سری کتاب رو هم نگاه کردم همشون هر المنتی رو که نیاز دارن می سازن و کلا دارن با کدها کار می کنند در صورتی که من می خواستم اگه بشه به صورت ویژوال کار کرد )
این مطلب در باره بانک اطلاعاتی و نحوه وصل شدن به اون که بیشتر مشهود بود و ...
راستی یه سوال دیگه :
وقتی روی یک دکه رویدادی مثلا کلیک رو براش می نویسی و خلاصه بعد منصرف می شی و می خواهی که دکه رو + کد و تابع مربوطه رو حذف کنی برنامه هی خطا می ده و ....
چطوری می شه تابع هایی که خالی هستن هنگام کامپایل آن تابع ها رو ( مانند دلفی ) حذف کرد ( اگه روش دستی هم بهم بگید ممنون می شم )
پیشاپیش از جوابی که ندادید و خواهید داد تشکر می کنم . :10:
Macdiano
21-01-2011, 15:27
سلام
شما یه پروژه دارید با N تا فرم
اگر درست متوجه شده باشم شما میخواهید در همه جای پروژه بتونید به یک فرم خاص دسترسی داشته باشید و فقط هم میخواهید یک Object از اون فرم ایجاد کنید.
راهی که به نظرم میاد اینه:
شما یک Class Library به پروژه Add کنید و کد زیر را در این فایل بنویسید.
Public_Form = نام کلاس فرم عمومی (همون فرمی که میخواهید در کل پروژه به هش دسترسی داشته باشید)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا میتونید در متد مربوط به (Event (Form_Load فرمی که موقع اجرای پروژه نشان داده میشود کد زیر را بنویسید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا در هر کجای پروژه که میخواهید از این فرم استفاده کنید بنویسید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بعد از این دستور وقتی دات (.) رو بزنید به تمام اجزای (public) این فرم دسترسی دارید
امیدوارم تونسته باشم کمکت کرده باشم.
هر کجای این کد نا مفهوم بود بفرمایید بیشتر توضیح بدم.
راستی یه سوال دیگه :
وقتی روی یک دکه رویدادی مثلا کلیک رو براش می نویسی و خلاصه بعد منصرف می شی و می خواهی که دکه رو + کد و تابع مربوطه رو حذف کنی برنامه هی خطا می ده و ....
چطوری می شه تابع هایی که خالی هستن هنگام کامپایل آن تابع ها رو ( مانند دلفی ) حذف کرد ( اگه روش دستی هم بهم بگید ممنون می شم )
پیشاپیش از جوابی که ندادید و خواهید داد تشکر می کنم . :10:
شما تابعی که برای اون event ساخته شده را دستی پاک کن بعد وقتی پروژه رو Rebuild میکنید روی همون ارور درون Error List دوبار کلیک کن, صفحه و خط مربوط به اون خطا نشان داده میشود دستی همون خط رو هم پاک کن.
as13851365
23-01-2011, 11:42
ممنون دوست عزیز که جواب دادید .
من کارهایی که شما گفتید رو انجام دادم ولی با مشکلی مواجه شدم ( گفته های شما کاملا درست بودن )
من کدهای خودم رو می زارم تا گویایی بیشتری داشته باشه
کد مربوط به کلاس
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد های مربوط هب فرم یک :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فرم 2 رو می تونم با دستور
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نشان بدم
بعد از این دستور وقتی دات (.) رو بزنید به تمام اجزای (public) این فرم دسترسی دارید
به پروپرتیهای خود فرم می شه دسترسی داشت
ولی وقتی می خوام به المنتهای فرم 2 دسترسی داشته باشم همانطوری که در کد به رنگ قرمز مشخص کردم با خطای ذیل مواجه می شم
'WindowsFormsApplication1.Form2.textBox1'is inaccessible due to its protection level
پیشاپیش از این که جواب می دید کمال تشکر رو دارم :10:
Macdiano
23-01-2011, 13:02
ولی وقتی می خوام به المنتهای فرم 2 دسترسی داشته باشم همانطوری که در کد به رنگ قرمز مشخص کردم با خطای ذیل مواجه می شم
'WindowsFormsApplication1.Form2.textBox1'is inaccessible due to its protection level
:10:
خوب گفتم دیگه شما فقط به اجزای public دسترسی دارید.
شما از طریق محیط Design فرم 2 روی Control مورد نظر کلیک کنید و در پنجره Properties مقدار Modifiers آن Public کنید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.