PDA

View Full Version : خطا در حذف تب از فرم اصلی از طریق فرم دوم



BEHZADnr
یک شنبه 11 مرداد 1394, 01:10 صبح
با سلام و خسته نباشید خدمت همه اساتید بزرگ برنامه نویسی

دارم روی یک پروزه کار میکنم و به پیشنهاد اساتید میخوام از تب برای نمایش فرم استفاده کنم
تا مرحله نمایش فرم در تب پیش رفتم ولی وقتی میخوام از فرم فرعی خارج بشم و تب باز شده را هم ببندم برنامه خطا میده
حالا یک نمونه آماده کردم تا اساتید بررسی کنند ، راستی من برای نمایش خودم این کدها رو نوشتم اگه جایی نیاز به تغییر داشت ممنون میشم که بهم بگید
133825

با تشکر

barnamenevism
یک شنبه 11 مرداد 1394, 08:29 صبح
اینم برای شما دوست عزیر

BEHZADnr
یک شنبه 11 مرداد 1394, 11:59 صبح
سلام دوست عزیز
با تشکر از پاسخ خوب و کاملتون
فقط اگه میشه یه توضیح مختصری برای نحوه عملکردش میخوام

barnamenevism
یک شنبه 11 مرداد 1394, 12:44 عصر
شما باید مفهموی به نامcontractor را بدونید...
خیلی ساده اگر بخوام بگم میشه یه متد که همنام خود کلاس است و برای مدیریت بهتر روی فیلدهای دورن یک کلاس ازش استفاده میشه!
حالا بریم سراغ فرم 2 شما و این کد ها رو ببینیم.
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
Form1 orginal;
public Form2( Form1 insert)
{
InitializeComponent();
orginal=insert;
}


خب خط اول که معلوم هست کلاس فرم 2 شما هست که از کلاس فرم ارث بری کرده این که هیچ...
خط دوم چیزی به نام default contractor هست که با اجرای این متد در واقع دستورات درون تابع InitializeComponent که مربوط به ظاهر فرم و چیزای دیگه هست اجرا میشه... اینم که به صورت عادی هست...
حالا من در خط بعد اومدم یک فیلد از نوع فرم یک شما درست کردم
بعد آمدم و یه contractor دیگه ساختم و ورودی اون رو گفتم از نوع فرم شماره یک باشه
و بعد مقداری که از ورودی گرفتم رو درون یک متغییر دیگه از نوع فرم ریختم orginal=insert;
بعدش زمانی که از فرم یک خواستم فرم 2 رو صدا بزنم کل فرم یک رو با اطلاعاتش روی فرم 2 ارسال کردم...اینطوری فرم 2 دسترسی مستقیم به اشیای روی فرم 1 خواهد داشت.
اگه برید توی فرم 1 خواهید دید که هنگام ساخت یک شی از فرم 2 کل فرم یک رو با کلمه کلیدی this‌به فرم 2 پاس دادم
Form2 f2 = new Form2(this);
حالا هر وقت فیلد orginal رو صدا بزنم و یک نقطه جلوش بزارم به کل اشایی فرم یک که حتما نباید از نوعprivet باشند دسترسی دارم...
......................
در یک کلام فرم 1 رو به فرم 2 پاس دادم و گفتم که فرم 2 هر کاری دلش خواست با فرم یک بکنه:گیج:
و در آخر خودم هم نفهمیدم چه گفتم خدا رحمت کنه:)

BEHZADnr
یک شنبه 11 مرداد 1394, 13:39 عصر
با تشکر از راهنمایی خوبتون

الان به یه مشکل دیگه خوردم
من برای تب از مجموعه DevComponent استفاده کردم
یه عکس برای کنترل تب گذاشتم و وقتی که فرم 2 رو به همراه تب میبندم صفحه مشکی میشه و عکس رو نشون نمیده
ولی وقتی از طریق کلید close خود تب بسته میشه این مشکل پیش نمیاد
ممنون میشم راهنمایی کنید
s6.picofile.com/file/8203791242/tabFormDev.rar.html (http://s6.picofile.com/file/8203791242/tabFormDev.rar.html)
راستی برای فعال شدن کلید close تبها روی superTabControl خاصیت closeButtonOnTabVisible رو فعال کنید

barnamenevism
یک شنبه 11 مرداد 1394, 14:44 عصر
هر چی نگاه میکنم خطایی نمیبینم یا من متوجه نمیشم ملب رو این لینکو نگاه کن!
http://mrd2011.persiangig.com/123.swf

BEHZADnr
یک شنبه 11 مرداد 1394, 14:56 عصر
میشه سورس پروژه خودتون رو بزارین؟
اون برنامه که من گذاشتم بعد از بستن سیاه میشه

barnamenevism
یک شنبه 11 مرداد 1394, 15:20 عصر
اوکی ولی من با Visual 2008 نوشتم امیدوارم بتونی استفاده کنی...
http://mrd2011.persiangig.com/tabcontorl.rar

BEHZADnr
یک شنبه 11 مرداد 1394, 15:37 عصر
دوست عزیز بازهم مشکل من حل نشد
دقیقا همون کد پروژه شما رو وارد میکنم ولی باز نمیشه
اگه لطف کنید و راهنمایی کنید ممنون میشم
هنوز برای من صفحه مشکی نشون میده

BEHZADnr
یک شنبه 11 مرداد 1394, 15:48 عصر
راستی شما از کدوم نسخه devComponent استفاده میکنید؟
من از ورژن 12.0.0.1 استفاده میکنم
فکر کنم مال شما نسخه قدیمی باشه ، درسته؟

BEHZADnr
یک شنبه 11 مرداد 1394, 16:01 عصر
ولی وقتی از طریق کلید close خود تب بسته میشه این مشکل پیش نمیاد
چرا اینطوری میشه؟

barnamenevism
یک شنبه 11 مرداد 1394, 16:22 عصر
این از صفر تا 100 ماجراست:لبخند:
http://mrd2011.persiangig.com/Sample.swf

BEHZADnr
یک شنبه 11 مرداد 1394, 17:35 عصر
من مثل شما همین مراحل رو انجام دادم ولی چرا نمیشه؟
یعنی مشکل از کجاست؟