PDA

View Full Version : فرم های MDI و مشکلات آنها



محسن بابائی
جمعه 09 فروردین 1387, 06:33 صبح
سلام
من یک فرم mdi دارم که فرم اصلی برنامه هست . می خوام یه picturebox بزارم روش که در کل صفحه گشیده شده باشه .
تا اینجا مشکلی نیسیت .
حالا تا فرم های دیگر را که خاصیت mdiparent شون را همون mdi گزاشتم ، باز می کنم فرم ها زیر picturebox قرار می گیرند و نمیشه دیدشون .
باید چیکار کنم .
در ضمن از خاصیت image خود فرم هم نمی خوام استفاده کنم .
مرسی

amirzazadeh
شنبه 10 فروردین 1387, 11:33 صبح
سلام
من یک فرم mdi دارم که فرم اصلی برنامه هست . می خوام یه picturebox بزارم روش که در کل صفحه گشیده شده باشه .
تا اینجا مشکلی نیسیت .
حالا تا فرم های دیگر را که خاصیت mdiparent شون را همون mdi گزاشتم ، باز می کنم فرم ها زیر picturebox قرار می گیرند و نمیشه دیدشون .
باید چیکار کنم .
در ضمن از خاصیت image خود فرم هم نمی خوام استفاده کنم .
مرسی
دوست من میتونی برای رفع این مشکل در هنگام لود فرمهات TOP MOST اونهارو برابر TRUE قراربدی

sinpin
شنبه 10 فروردین 1387, 12:07 عصر
دوست من میتونی برای رفع این مشکل در هنگام لود فرمهات TOP MOST اونهارو برابر TRUE قراربدی
اینکار مشکلی رو حل نمیکنه.
اما میشه در زمان لودینگ child forms کنترلهای اضافی رو invisible کرد.

touraj
شنبه 10 فروردین 1387, 12:55 عصر
سلام
من یک فرم mdi دارم که فرم اصلی برنامه هست . می خوام یه picturebox بزارم روش که در کل صفحه گشیده شده باشه .
تا اینجا مشکلی نیسیت .
حالا تا فرم های دیگر را که خاصیت mdiparent شون را همون mdi گزاشتم ، باز می کنم فرم ها زیر picturebox قرار می گیرند و نمیشه دیدشون .
باید چیکار کنم .
در ضمن از خاصیت image خود فرم هم نمی خوام استفاده کنم .
مرسی

اگه فقط منظورت اینه که اون عکس بک گراند فرم اصلی باشه، از picturebox استفاده نکن. توی property فرم از image استفاده کن.

saeed_rezaei
شنبه 10 فروردین 1387, 15:12 عصر
توی property فرم از image استفاده کن.




در ضمن از خاصیت image خود فرم هم نمی خوام استفاده کنم


و همچنین می تونید از متد
Me.CreateGraphics.DrawImage
استفاده کنید.

touraj
شنبه 10 فروردین 1387, 15:32 عصر
و همچنین می تونید از متد
Me.CreateGraphics.DrawImage
استفاده کنید.


باز هم فرم زیر image قرار میگیره و دیده نمیشه.
نمیفهمم. چرا نمی خواد از image خود فرم استفاده کنه؟

babakj
شنبه 10 فروردین 1387, 17:50 عصر
کنترل image رو bringToFront کن

touraj
شنبه 10 فروردین 1387, 20:01 عصر
کنترل image رو bringToFront کن

اگه این کار رو انجام بده که بدتر میشه. منظورت send to back بود؟ اگه منظورت send to back بود، باید بگم که نمیشه. چون زمانی که برنامه بالا میاد، image پشت فرم اصلی قرار میگیره. یعنی وجود و عدم وجودش بی معنی میشه.

VBExpress
شنبه 10 فروردین 1387, 20:36 عصر
فکر نکنم چنین چیزی امکان داشته باشه ... فرم فرزند فقط تو محیط Client فرم پدر قرار میگیره و وقتی شما کنترلی رو به فرم پدر Dock میکنی ، محیط Client یا داخلی فرم پدر با کنترلهای Dock شده بهش حساب میشه ...
ضمن اینکه هر چیزی که نشه انجامش داد مشکل نیست ...
اصلا واسه چی می خوای این کار رو بکنی ؟؟؟

Reza_Shamayel
یک شنبه 11 فروردین 1387, 19:34 عصر
با سلام خدمت همه عزیزان برنامه نویس ...

فکر کنم با روش زیر، بتونید نتیجه مورد نظرتون رو بگیرید:

توی فرم فرزند، داخل رویه HandleCreated کد زیر رو بنویسید:


Me.BringToFront()
اگه هم جواب نداد، کد فوق رو بصورت زیر تغییر بدید:


Me.TopLevel = False
Me.Parent = frmParent
Me.BringToFront()
البته منظور از frmParent، همون نام فرم پدر هستش.

موفق باشید.

محسن بابائی
سه شنبه 13 فروردین 1387, 01:42 صبح
دوستان عزیز مرسی که جواب دادین . راههایی که ارائه کردین را باید چک کنم ، بهتون جواب می دم .

محسن بابائی
جمعه 16 فروردین 1387, 12:24 عصر
سلام . هیچ کدام از کدها جواب نمی ده .

من از یک TaskPanel روی فرم استفاده می کنم که قسمتی از فرم اصلی را Cover می کنه . این TaskPanel دقیقا مثل ToolBox خود DotNet قابلیت Show و Hide شدن را توسط کاربر داره .
حالا به این خاطر می خوام از PictureBox استفاده کنم که وقتی کاربر TaskPanel را Show کرد خود PictureBox که خاصیت Dock را برابر Fill قرار داده ام کوچکتر شده و کل عکس همیشه دیده خواهد شد . اگر از Image خود فرم استفاده کنم چنین کاری که PictureBox انجام می ده را نمی تونه انجام بده .

فکر کنم تونسته باشم منظورم را گفته باشم .