PDA

View Full Version : فرم فرزند MINIMIZE نمی شود



hsadeh
چهارشنبه 24 مرداد 1386, 10:37 صبح
سلام
من در VB.NET دوتا فرم دارم که یکی را بعنوان پدر تعریف کردم ( ISMDICONTAINER=T) و دیگری را فرزند تعریف کردم .
درون فرم پدر دکمه ای تعریف کردم که با کلیک روی آن ، فرم فرزند که مخفی بود ، نمایان شود .برای مخفی کردن فرم فرزند رنگ پس زمینه و کادر فرم و کنترل باکس آنرا برداشتم.
حالا مشکلم اینجاست که درموقع اجرای برنامه ، اگر فرم پدر را MINIMIZE کنم ، فرم فرزند MINIMIZE نمی شود
کدهای دکمه بازکننده فرم فرزند :

Dim c As New Frmfardi
()c.Show
Frmfardi=فرم فرزند

کدهای درون فرم فرزند :



Dim ma As New frmmain
Dim fa As New Frmfardi
fa.MdiParent = ma
frmmain=فرم پدر
Frmfardi=فرم فرزند

حامد مصافی
چهارشنبه 24 مرداد 1386, 12:03 عصر
منظورتون اینه که فرم فرزند اصلاً در داخل فرم والد نمایش داده نمیشه؟ چون در غیر اینصورت با مخفی شدن فرم والد فرم فرزند اصلاً نباید قابل نمایش باشه.

hsadeh
چهارشنبه 24 مرداد 1386, 12:06 عصر
نه- فرم فرزند در داخل فرم والد نمایش داده میشود ولی وقتی که فرم والد را minimize کنم ، فرم فرزند minimize نمی شود

حامد مصافی
چهارشنبه 24 مرداد 1386, 12:16 عصر
یعنی چی؟
-فرم فرزند در داخل فرم والد نمایش داده میشه.
-وقتی فرم والد کمینه میشه فرم فرزند همچنان نمایش داده میشه؟؟

این غیر ممکنه!

hsadeh
چهارشنبه 24 مرداد 1386, 12:21 عصر
باور کنید الان اینطوری شده . راه حلی به ذهنتان نمی رسد ؟

پویا
چهارشنبه 24 مرداد 1386, 12:52 عصر
چرا لقمه رو دور دهانتون می چرخونین
مگه form.Hide() کار نمی کنه؟

saeed_rezaei
چهارشنبه 24 مرداد 1386, 12:59 عصر
اگه فرم والد و فرزند رو درست برنامه نویسی کرده باشید، من هم می گم، غیر ممکنه.

saeed_rezaei
چهارشنبه 24 مرداد 1386, 13:02 عصر
البته فکر می کنم که کدهای بالا رو اشتباه نوشته باشید. در هر صورت ، بهترین راه برای نمایش فرم فرزند ، اینه که بری مثلا توی دکمه ای که قرار فرم فرزند رو فراخوانی کنه و بعد این کد رو بنویس:

dim F as new FORMCHILD
f.mdiparrent=me
f.show

hsadeh
چهارشنبه 24 مرداد 1386, 13:24 عصر
سلام پویا جان . توصیه شما را بکار بردم ولی بازهم جواب نداد

hsadeh
چهارشنبه 24 مرداد 1386, 18:38 عصر
آقای Saeed_Rezaei دست شما درد نکند . مشکل من حل شد ولی وقتی فرم فرزند را فراخوانی میکنم ، برای یک لحظه دکمه های close و minimize و کادر اطراف فرم نشان داده میشوند . آیا کدی هست که فرم فرزند را طوری فراخوانی کند که این مشکلات را نداشته باشد ؟

SMRAH1
پنج شنبه 25 مرداد 1386, 07:15 صبح
مشکل اصلی به خاطره اینکه که فرم فرزند ، <<واقعا فرم فرزند>> نیست بلکه فقط در فرم پدر به عنوان یک فرم جدید بازمیشه و پدر واقعی آن همان دسکتاپ ویندوزه.(این فرم کاملا در وسط فرم پدر فراخوانش یعنی دیالوگ پدر ما نیز باز می شود).توجه کن که باید در تابع سازنده کلاس فرم پدر، یک شی از فرم فرزند را توسط تابع add یعنی به شکل زیر در تابع پدر پیاده ساری کنی
dlgChildDlg = new ChileDlg()
this.controls.add(dlgChildDlg)
البته باید سایز و .. را هم تنظیم کنی . به صورت پشیفرض هم مخفی باشه و با کلیک کردن نمایش داده بشه.در این حالت این فرم واقعا فرم فرزند است و با آن به مانند دیگر کنترل ها فرم پدر، برخورد خواهد شد.

hsadeh
پنج شنبه 25 مرداد 1386, 07:38 صبح
از لطف شما ممنونم - اما میشه بیشتر توضیح بدی . ممنون

saeed_rezaei
پنج شنبه 25 مرداد 1386, 10:41 صبح
ولی وقتی فرم فرزند را فراخوانی میکنم ، برای یک لحظه دکمه های close و minimize و کادر اطراف فرم نشان داده میشوند . آیا کدی هست که فرم فرزند را طوری فراخوانی کند که این مشکلات را نداشته باشد ؟

دوست من، خودتون هم که می دونید. باید formborderstyle رو تغییر بدید اما زمان این تغییر مهمه.
بهترین محل برای تغییر این خاصیت هنگامی هست که فرم رو فراخوانی می کنید. برای مثال ، فرض کنید که نام فرم فرزند شما form2 باشه. حالا کدی رو که قبلا هم واست زدم، به صورت زیر تغییر بده.


Dim f AsNew Form2
f.FormBorderStyle = Windows.Forms.FormBorderStyle.None
f.MdiParent = Me
f.Show()

hsadeh
پنج شنبه 25 مرداد 1386, 11:05 صبح
این کار را هم انجام دادم ولی باز هم مشکل حل نشد

PC2st
پنج شنبه 25 مرداد 1386, 11:20 صبح
دوست عزیز، خاصیت IsMdiContainer از فرم والد رو برابر true گذاشتید؟


ma.IsMdiContainer = True

hsadeh
پنج شنبه 25 مرداد 1386, 11:24 صبح
بله این کار را هم همون اول انجام داده ام

PC2st
پنج شنبه 25 مرداد 1386, 11:27 صبح
میتوانید نمونه برنامه (یا چیزی شبیه به آن) را ضمیمه کنید؟

hsadeh
پنج شنبه 25 مرداد 1386, 12:02 عصر
دوباره فرستادم

PC2st
پنج شنبه 25 مرداد 1386, 12:55 عصر
فایل رو دانلود کردم، برنامه رو اجرا کردم، اجرا هم شد ولی وقتی که روی اولین دکمه کلیک کردم تا Frmfardi رو نمایش بده، برنامه با خطا متوقف شد! ظاهرا چند Refernce به برنامه اضافه کرده بودید تا از کنترلهای آن در فرمتون (فرم Frmfardi) استفاده کنید، من اون کنترلها رو پاک کردم و دوباره برنامه رو اجرا کردم، اینبار با کلیک روی دکمه (برای نمایش فرم Frmfardi) مشکلی پیش نیامد.
متن برنامه هم نامشخص بود و فارسی نمایش داده نمیشد.
فقط میخواستم بگم که این مشکل را داشتم، شاید بعدا بدردت بخوره.

در مورد Minimize کردن برنامه (فرم پدر) مشکلی ندیدم!؟ هر وقت که فرم پدر رو مینیمم می کردم، فرم فرزند هم مخفی میشد... از دات نت 2 استفاده میکنم.

hsadeh
پنج شنبه 25 مرداد 1386, 13:07 عصر
دست شما درد نکند . مشکل minimize که در تاپیکهای قبلی حل شد . مشکل من اینه که وقتی فرم فرزند را فراخوانی میکنم ، برای یک لحظه دکمه های close و minimize و کادر اطراف فرم نشان داده میشوند که خوب نیست