PDA

View Full Version : سوال: تنظیم کردن اندازه فرمها برای اجرا شدن روی سیستم ها با رزولوشن های متفاوت



alirezamli
دوشنبه 14 شهریور 1390, 11:14 صبح
با سلام خدمت تمام دوستان
برنامه ای نوشتم که از چندین فرم تشکیل شده . اندازه فرم ها را بجز فرم اصلی که Maximized است بقیه را به صورت دستی تنظیم میکنم وقتی که این برنامه روی سیستم مقصد با Resolutionی متفاوت از Resolution سیستم مبداء اجرا میشه قسمتی از فرم ها از دسکتاپ خارج شده و قابل مشاهده نیست برای حل این مشکل باید چه کار کنم ؟(فرم اصلی که Maximized است هیچ مشکلی نداره)

رافعی مهدی
دوشنبه 14 شهریور 1390, 12:36 عصر
سلام
myForm.Size = Screen.PrimaryScreen.WorkingArea.Size;

mjt10063
دوشنبه 14 شهریور 1390, 13:42 عصر
دوست عزیز این چه سایزی رو نمایش میده

alirezamli
دوشنبه 14 شهریور 1390, 14:38 عصر
سلام
myForm.Size = Screen.PrimaryScreen.WorkingArea.Size;

با تشکر از شما دوست عزیز
چطوری و کجا باید از این دستور استفاده کنم . به عنوان مثال من یه فرم دارم که اندازه اون 945*1140 هست و کامپیوترم رزولوشن 1024*1280 داره و درست نمایش داده میشه ولی اگه رزولوشن را تغییر بدم فرم از دسکتاپ خارج میشه.

رافعی مهدی
دوشنبه 14 شهریور 1390, 16:25 عصر
[
بر اساس توضیحاتی که دادید این احتمالات وجود داره:
1- بجز برای فرم اصلی به علتی مایل به Load کردن سایر فرمها در حالت اولیه Maximize نیستید.
2- نمیخواهید کاربر قادر به Maximize کردن سایر فرمها باشد.
3- طراحی فرمها رو به گونه ای انجام نداده اید که Anchor کنترلهای روی آنها باعث نمایش مناسب فرمها در رزولوشن های مختلف بشه.
4- موقعیت اولیه فرمها نسبت به دسکتاپ به درستی تعیین نشده است.
:
:
...- اگر یک یا چند مورد از احتمالات فوق درست هست بفرمایید تا دوستان بیشتر راهنمایی کنند. اگر هم هیچ کدوم از اینها نیست لطفاً بیشتر توضیح بدید!
]

اما صرفنظر از هر علتی که به خاطرش این سوال رو پرسیدید...

در کد فوق فرض شده که اسم فرم شما myForm باشد، بنابراین از هر جایی که به instance ای از فرم مورد نظرتان دسترسی داشته باشید، میتوانید از این کد استفاده کنید. در صورتی که از داخل کلاس فرم میخواهید اندازه فرم رو تغییر بدید بجای myForm از this استفاده کنید.

در این کد پراپرتی WorkingArea به مستطیل قابل استفاده از فضای دسکتاپ اشاره میکند که با Maximize شدن یک پنجره، اندازه آن برابر با این مستطیل میشود. بنابراین با رزولوشن دسکتاپ متفاوت است. (مثلا شامل ناحیه taskbar نمیشود و ...)

میتوانید در رخداد Shown فرم از این دستور استفاده کنید تا بلافاصله پس از نمایش داده شدن فرم مورد نظر، بدون Maximize شدن، اندازه آن به اندازه توضیح داده شده تغییر کنه.

alirezamli
دوشنبه 14 شهریور 1390, 17:54 عصر
مورد هایی که در بالا اشاره کردید در مورد فرم های برنامه صدق می کنه یعنی میخوام :
1 - کاربر قادر به Maximize کردن فرم ها نیست.
2 - بجز فرم اصلی سایر فرمها در حالت اولیه Maximize نیستند.

رافعی مهدی
سه شنبه 15 شهریور 1390, 11:01 صبح
ok، تکه کد فوق مشکل شما رو حل کرد؟