PDA

View Full Version : استفاده از چند فرم در برنامه



UVSe7en
شنبه 29 تیر 1387, 17:04 عصر
دوستان سلام

من در حال نوشتن یک برنامه هستم که یک فرم اصلی دارد. من از طریق راست کلیک کردن روی نام Solution برنامه ام، در بخش Solution Explorer یک Windows Form به پروژه ام اضافه کردم و نامش را هم frmcustomoption گذاشتم.
خواستم از طریق یک Button در فرم اصلی این فرم دوم را فراخوانی کنم اما با کمال تعجب دیدم :

frmcustomoption.ShowDialog();

نداریم !!!! :عصبانی++:
(در حالی که توی اکثر سایت ها دیدم این کد برای نمایش فرم های دیگر در پروژه استفاده شده است.)
و خطای زیر را مشاهده کردم :

An object reference is required for the nonstatic field, method, or property 'System.Windows.Forms.Form.ShowDialog()'

دوستان لطفا کمکم کنید تا مشکلم حل بشود.:ناراحت:
فقط با عرض معذرت کامل توضیح دهید.

Sajjad.Aghapour
شنبه 29 تیر 1387, 17:09 عصر
خوب دوست عزیز شما قبل از استفاده از هر کلاسی باید یک ابجکت از اون بسازی...
باید اینطوری بنویسی...


frmcustomoption obj = new frmcustomoption();
obj.ShowDialog();

UVSe7en
شنبه 29 تیر 1387, 18:16 عصر
ممنون واقعا ممنون
sajjadlove عزیز تشکر میشه یه مقداری توضیح بدی که چه مواقعی باید آبجکت ساخت ؟
بازم ممنون.

UVSe7en
شنبه 29 تیر 1387, 18:24 عصر
ببخشید باز هم یک مشکل در این رابطه دارم!
خب مشکل نمایش یک فرم دیگه حل شد ولی حالا می خوام از متغیر های فرم اصلی در این فرم جدید بهره بگیرم اما اینها رو نمیشناسه در حالیکه در فرم اصلی اونها رو به صورت عمومی معرفی کرده ام. مثلا Picturebox من رو هم که در فرم اصلی هست نمیشناسه !!!
باید چه کنم تا به تمام اطلاعات فرم اصلی از جمله کنترل ها و متغیر ها دسترسی داشته باشم؟
ممنون می شوم کمکم کنید آخه تازه کارم و تا الان برنامه هام همه تک فرمی بودن !!!! (چه بی سواد)

بازم ممنون.

corona
شنبه 29 تیر 1387, 19:10 عصر
ببین دوست عزیز برای استفاده از متغیرهای یک فرم توی فرم دیگه تنها عمومی کردن اونها کافی نیست ، شما وقتی سطح دسترسی متغییر ها و کنترل ها رو عمومی می کنی ، یعنی اینکه فقط به توابع و کلاسهای دیگه در همون فایل اسمبلی اجازه دسترسی به این متغییر ها رو دادی نه به کلاس دیگه ای در یک فرم جدا و اسمبلی جدا . خوب حالا برای حل این مشکلت دو راهی که خودم یاد دارم رو بهت میگم : 1- اون متغییر ها و کنترل هایی کم می خوای تو فرم دیگه بهشون دسترسی داشته باشی باید به صورت static تعریف کنی ، با اینکار به کامپایلر میگی که برای استفاده از این متغییرها نیازی به شی از نوع کلاس نیست و این متغییر های هر جای برنامه و به صورت classname.variablename قابل استفاده هستن . راه دوم اینکه اگه نمی خوای اون متغغیرها متغییر سطح کلاس باشن static نباشن اینه که .قتی داری توی فرم فعلی که همه متغغیرهای مورد نیازت توی فرم دیگه درش تعریف شده ، فرم دیگه برنامت رو صدا می زنی بیای همه اون متغغیرهایی رو که لازم داری توی فرم دیگه به سازنده اون فرم دیگه پاس بدی ، در این صورت هم میتونی از متغییرهای فرم فعلی در فرم دیگه استفاده کنی .

UVSe7en
یک شنبه 30 تیر 1387, 07:48 صبح
corona عزیز سلام
دوست عزیز در مورد متغیر ها مشکلم با تعریف متغیر به شکل استاتیک حل شد اما همچنان با کنترل Picturebox که در فرم اصلی هست نمی توانم از طریق فرم دوم ارتباطی برقرار کنم ممنون می شوم من را راهنمایی کنی.
در کل می خواهم به همه ی کنترل ها در همه ی فرم های پروژه ام دسترسی داشته باشم.
در مورد راه حل دوم هم اگز برای شما ممکن هست مثالی مطرح بفرمایید.
باز هم ممنون از شما.

sinpin
یک شنبه 30 تیر 1387, 07:51 صبح
مطالب تاپيك زير را دنبال كنيد :
http://barnamenevis.org/forum/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-c/91138-%D9%86%D8%AD%D9%88%D9%87-%DB%8C-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D9%88-%D9%BE%D8%A7%D8%B3-%D9%83%D8%B1%D8%AF%D9%86-%D9%85%D9%82%D8%A7%D8%AF%D9%8A%D8%B1-%D9%85%D9%8A%D8%A7%D9%86-%D8%A2%D8%A8%D8%AC%DA%A9%D8%AA-%D9%87%D8%A7%DB%8C-%D8%AF%D9%88-%D9%81%D8%B1%D9%85.html (http://barnamenevis.org/forum/91138-%D9%86%D8%AD%D9%88%D9%87-%DB%8C-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D9%88-%D9%BE%D8%A7%D8%B3-%D9%83%D8%B1%D8%AF%D9%86-%D9%85%D9%82%D8%A7%D8%AF%D9%8A%D8%B1-%D9%85%D9%8A%D8%A7%D9%86-%D8%A2%D8%A8%D8%AC%DA%A9%D8%AA-%D9%87%D8%A7%DB%8C-%D8%AF%D9%88-%D9%81%D8%B1%D9%85.html)