PDA

View Full Version : سوال: چطور فرمي رو به صورت فول اسكرين تعريف كنم؟



samaram
سه شنبه 04 اسفند 1388, 09:37 صبح
من ميخوام فرمي ايجاد كنم كه اندازه اش به اندازه ي كل صفحه نمايش باشه. راهي كه خودم بلدم اينه كه سايزش رو مثلا 1024*768 قرار بدم. اما اين مشكلي كه داره اينه كه فرمم روي مانيتورهايي كه رزوليشنشون مثلا 600*700 هست يه مقدار جمع تر ميشه و اينجوري كنترل هاش به هم ميريزه. چطور اندازه ي فرمم رو فول اسكرين تعريف كنم و در عين حال كنترل ها هم به هم نخوره.

majjjj
سه شنبه 04 اسفند 1388, 09:42 صبح
فرم رو انتخاب کنید سپس کلید F4و
خصوصیت startupposition فرم رو ست کنید.

samaram
سه شنبه 04 اسفند 1388, 10:02 صبح
فرم رو انتخاب کنید سپس کلید F4و
خصوصیت startupposition فرم رو ست کنید.
!!!! انگار منظورمو اشتباه متوجه شدين. من نميخوام موقعيت فرمم در صفحه نمايش رو تعيين كنم. من فقط ميخوام فرمم در هر كامپيوتري با هر رزوليشني كه داره بصورت تمام صفحه باز شه. يعني سايزش تمام صفحه رو پر كنه

meitti
سه شنبه 04 اسفند 1388, 10:10 صبح
خاصيت windowstate فرم رو به Maximized تغيير بده

M.YasPro
سه شنبه 04 اسفند 1388, 10:25 صبح
سلام
با کلاس screen می تونی resoloution فعلی رو متوجه بشی بعد witdh , height فرمت رو تغییر بدی

samaram
سه شنبه 04 اسفند 1388, 10:41 صبح
خاصيت windowstate فرم رو به Maximized تغيير بده
اينكارو كردم تغيير نكرد!

samaram
سه شنبه 04 اسفند 1388, 10:49 صبح
سلام
با کلاس screen می تونی resoloution فعلی رو متوجه بشی بعد witdh , height فرمت رو تغییر بدی
همچين كدي نوشتم. ببينيد:



Screen objs=new Screen ();


FrmMain obj = new FrmMain();
obj.Width = objs.WorkingArea.Width;
obj.Height = objs.WorkingArea.Height;

ولي موقع اجرا اين پيغامو ميده:
the type 'System.windows.forms.screen' has no constractors defined
اومدم using كنم . اون قسمت screen بالا رو نداشت.

samaram
سه شنبه 04 اسفند 1388, 22:39 عصر
دوستان راهی نداره؟ اگه راه نداره خب بگید بی خیالش شم. اگه میشد یه جورایی این دکمه ی MAXIMIZE رو با کد نویسی در اختیار گرفت خیلی خوب بود

FastCode
سه شنبه 04 اسفند 1388, 23:39 عصر
دوستان راهی نداره؟ اگه راه نداره خب بگید بی خیالش شم. اگه میشد یه جورایی این دکمه ی MAXIMIZE رو با کد نویسی در اختیار گرفت خیلی خوب بود

FrmMain obj = new FrmMain();
obj.Width = Screen.WorkingArea.Width;
obj.Height = Screen.WorkingArea.Height;
obj.Location=Point.Zero;

علیرضا حسن زاده
سه شنبه 04 اسفند 1388, 23:50 عصر
شما می تونی انتخاب کنی که فرم همیشه در حالت MAx باز بشه اما توجه داشته باش که جای کنترل ها با تغییر اندازه فرم تغییر پیدا می کنه و مکان اونا رو باید نسبت به اندازه فرم تنظیم کنید نه یه مکان مطلق.
اگه وقت کنم یه سورس برا تون می زارم

samaram
چهارشنبه 05 اسفند 1388, 07:58 صبح
FrmMain obj = new FrmMain();
obj.Width = Screen.WorkingArea.Width;
obj.Height = Screen.WorkingArea.Height;
obj.Location=Point.Zero;

ممنون. ولي اين كد كه جواب نميده. اگه نام كلاس Screen رو مثل شما مستقيم بيارم ديگه متدworkingArea رو نميشناسه. اما اونجوري كه خودم يه شي ازش ايجاد كردم شناخت ولي خطايي كه تو پست هاي قبل اشاره كردم داد. ضمنا اون سطر آخر هم بعد از point ديگه Zero رو نميشناسه. شما قبلش تعريف خاصي انجام دادين؟

علیرضا حسن زاده
چهارشنبه 05 اسفند 1388, 23:12 عصر
WindowState رو Maximized ست کن فرمت همیشه در بزرگترین اندازه باز میشه حالا فقط میمونه که کنترل های روی فرم جاشون تغییر نکنه که انوم اشاال.. اگه فرصت شد یه برنامه واستون می زارم

samaram
پنج شنبه 06 اسفند 1388, 07:23 صبح
WindowState رو Maximized ست کن فرمت همیشه در بزرگترین اندازه باز میشه
اینکارو کردم و درست نشد!

M.YasPro
پنج شنبه 06 اسفند 1388, 07:38 صبح
توی formLoad اینو بنویسید:


this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;

اگه منظورتونو درست فهمیده باشم

AliRezaPro
پنج شنبه 06 اسفند 1388, 09:32 صبح
سلام
در ویندوز اپلیکیشن تنها راهی که دارید برای اینکه فرم و کنترل های شما در رزولیشن های مختلف به هم نریزد این است که تمام کنترل ها و فرم و ... را در بدترید حالت "800*600 طراحی کنید و اونو ماکس کنید و انچور و ...به اون بدید.
البته در WPF این مشکل حل شده است اما در ویندوز اپلیکیشن این مشکل هنوز پا برحاست.
----------------

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

FastCode
پنج شنبه 06 اسفند 1388, 18:52 عصر
ممنون. ولي اين كد كه جواب نميده. اگه نام كلاس Screen رو مثل شما مستقيم بيارم ديگه متدworkingArea رو نميشناسه. اما اونجوري كه خودم يه شي ازش ايجاد كردم شناخت ولي خطايي كه تو پست هاي قبل اشاره كردم داد. ضمنا اون سطر آخر هم بعد از point ديگه Zero رو نميشناسه. شما قبلش تعريف خاصي انجام دادين؟

ببخشید, به IDE دسترسی نداشتم.
Zero-->Empty
Screen.WorkingArea-->Screen.PrimaryScreen.WorkingArea

samaram
جمعه 07 اسفند 1388, 20:42 عصر
ببخشید, به IDE دسترسی نداشتم.
Zero-->Empty
Screen.WorkingArea-->Screen.PrimaryScreen.WorkingArea
بازم نشد. این کد منه. ببینید:


FrmMain objm = new FrmMain();
objm.Width = Screen.PrimaryScreen.WorkingArea.Width;
objm.Height = Screen.PrimaryScreen.WorkingArea.Height;
objm.Location = Point.Empty;

راستی یه موضوع دیگه. فرمم وقتی میخواد لود بشه بصورت مینیمایز لود میشه! یعنی از همون اول بصورت یه دکمه رو تسک بار قرار میگیره و باید روش کلیک کنم تا بیاد بالا! چرا؟ هیچ کد خاصی هم براش ننوشتم

MehdiLiver
جمعه 07 اسفند 1388, 21:06 عصر
بازم نشد. این کد منه. ببینید:


FrmMain objm = newFrmMain();
objm.Width = Screen.PrimaryScreen.WorkingArea.Width;
objm.Height = Screen.PrimaryScreen.WorkingArea.Height;
objm.Location = Point.Empty;

راستی یه موضوع دیگه. فرمم وقتی میخواد لود بشه بصورت مینیمایز لود میشه! یعنی از همون اول بصورت یه دکمه رو تسک بار قرار میگیره و باید روش کلیک کنم تا بیاد بالا! چرا؟ هیچ کد خاصی هم براش ننوشتم
تو Properties قسمت Windows State اونجارو Normal کن تا صفحه برنامت هنگام load کوچیک نیاد بالا

samaram
جمعه 07 اسفند 1388, 21:19 عصر
تو Properties قسمت Windows State اونجارو Normal کن تا صفحه برنامت هنگام load کوچیک نیاد بالا
maximized کردم. فرمم هم همونطور که میخواستم شد!!!!!!!!! فقط حیف جای این کنترل ها عوض شده

FastCode
جمعه 07 اسفند 1388, 22:20 عصر
فقط حیف جای این کنترل ها عوض شده
از انکور استفاده کنید.

samaram
شنبه 08 اسفند 1388, 10:57 صبح
از انکور استفاده کنید.
خيلي عذر ميخوام اما من اونقدرا حرفه اي نيستم. نميدونم انكور چيه؟

M.YasPro
شنبه 08 اسفند 1388, 11:08 صبح
هر کنترل یه پراپرتی داره به نام anchor که چهار حالت داره (top,left,right,bottom) .
هر کدوم ازین ها اگه انتخاب بشن این کنترل در runTime وقتی که کنترلی که اونو در بر گرفته resize بشه این کنترل نسبت به کنترل در بر گیرندش تغییر مکان میده
با یک بار امتحان همه چی رو متوجه میشین
موفق باشین

hamed_f65
شنبه 08 اسفند 1388, 11:12 صبح
ببين دوست عزيز
بترين راه اينه كه همه ي كنترل هاتون رو توي پنل قرار بديد
هر كنترلي توي يه پنل
بعدش خاصيت dock هر پنل رو چپ يا راست قرار بديد
در اين صورت هنگامي كه فرمتون تغيير سايز پيدا كنه پنل ها هم به تناسب سر جاشون قرار مي گيرن
البته اين تنها راه ممكن نيست
در حال حاضر سمپل ندارم اينجا قرار بدم
ولي اين نكته رو بگم كه اگه تعداد كنترلهاتون زياد باشه مجبور هستيد حتي از پنل هاي تو در تو هم استفاده كنيد
اميدوارم متوجه شده باشي منظورمو
بهتر اينه كه با يه فرم كوچيك و يه پنل كاري كه گفتم رو تست كني و بعدش اين قضيه رو گسترش بدي
موفق باشي

Amir Oveisi
سه شنبه 17 فروردین 1389, 00:08 صبح
ببين دوست عزيز
بترين راه اينه كه همه ي كنترل هاتون رو توي پنل قرار بديد
هر كنترلي توي يه پنل
بعدش خاصيت dock هر پنل رو چپ يا راست قرار بديد
در اين صورت هنگامي كه فرمتون تغيير سايز پيدا كنه پنل ها هم به تناسب سر جاشون قرار مي گيرن
البته اين تنها راه ممكن نيست
در حال حاضر سمپل ندارم اينجا قرار بدم
ولي اين نكته رو بگم كه اگه تعداد كنترلهاتون زياد باشه مجبور هستيد حتي از پنل هاي تو در تو هم استفاده كنيد
اميدوارم متوجه شده باشي منظورمو
بهتر اينه كه با يه فرم كوچيك و يه پنل كاري كه گفتم رو تست كني و بعدش اين قضيه رو گسترش بدي
موفق باشي


دوست عزیز این روش شما یعنی تعداد کنترل های برنامه دو برابر بشه! تصور کنید چه اتفاقی می افته؟
به هیچ وجه این روش توصیه نمیشه و هیچ جایی هم ندیدم من که چنین کاری کرده باشند یا توصیه کرده باشند این روش رو.
نکته آخر اینکه هر کاری که مشکلی رو حل کنه لزوما نمیتونه راه حل باشه.

موفق باشید

ostovarit
یک شنبه 11 مهر 1389, 16:57 عصر
با سلام
دوستان عزیز من هم مشکلی تغریبا مشابه دارم که هنوز به جواب نرسیدم ...
http://barnamenevis.org/forum/showthread.php?t=250977

sorenamusic
پنج شنبه 22 مهر 1389, 01:58 صبح
سلام
شما این کد رو بکار ببرید .
از صباح فتحی گرفتم


w = Screen.PrimaryScreen.Bounds.Width;
h = Screen.PrimaryScreen.Bounds.Height;


سپس این مقادیر رو برابر سایز فرم کنید