PDA

View Full Version : سوال: چطور میتونم فرمی طراحی کنم که بعد نمایش بشه به فرم زیرین دسترسی داشته باشم؟



Mofid.m
چهارشنبه 27 اسفند 1393, 20:35 عصر
درود به همه دوستان
من یه فرم اصلی دارم تو برنامم و چند تا فرم دیگه که از توی فرم اصلی بهشون دسترسی دارم.
من حالا میخوام طوری این فرم ها رو نمایش بدم که بشه به فرم زیرین هم دسترسی داشت و در عین حال زیر فرم اصلی گم نشه.
مثل باز شدن پنجره های ویندوز باشه.
اگر فرم رو Show کنم وقتی روی فرم اصلی کلیک میکنم، فرم دوم زیر فرم اصلی میره.
اگر show dialog کنم اصلا به فرم اصلی تا بسته نشدن فرم دوم دسترسی ندارم.

و زمانی هم که فرمم رو minimize کردم میخوام توی فرم اصلی من اون پایین جمع بشه.
اگر بشه مثل ویندوز یه Taskbar بزارم و اونجا هم نمایش بدم و با Minimize شدن هم اونجا جمع بشه که خیلی عالی میشه.

چطوری میشه چنین فرم هایی رو طراحی کرد؟

rasol_afkham
پنج شنبه 28 اسفند 1393, 01:42 صبح
شما باید از فرم های فرزند استفاده کنی که در فرم والد قرار می گیرند. همانند نرم افزار Excel که می شه چندین سند را در یک فرم باز نمود.

Mofid.m
پنج شنبه 28 اسفند 1393, 01:54 صبح
شما باید از فرم های فرزند استفاده کنی که در فرم والد قرار می گیرند. همانند نرم افزار Excel که می شه چندین سند را در یک فرم باز نمود.

تا حالا با چنین فرم هایی کار نکردم
میشه بیشتر توضیح بدین.

Mofid.m
پنج شنبه 28 اسفند 1393, 21:40 عصر
یعنی اصلا راهی وجود نداره که بشه چنین کاری رو انجام داد؟

Mahmoud Zaad
پنج شنبه 28 اسفند 1393, 21:55 عصر
سلام
شما فرم رو show کنید و البته قبلش خاصیت TopMost رو True کنید.

Form2 f2 = new Form2();
f2.TopMost = true;
f2.Show();

Mofid.m
پنج شنبه 28 اسفند 1393, 22:23 عصر
تشکر دوست عزیز
این روش فقط بخشی از مشکل رو حل میکنه.
مشکل من با minimize کردن فرم هم هست.
میخوام وقتی minimize کردم اون پایین ولی توی فرم اصلی برنامم جمع بشه.
برای انجام این کار از چه دستوری باید استفاده کنم؟

Navid92
پنج شنبه 28 اسفند 1393, 22:32 عصر
سلام رفیق باید از خاصیت IsMdiContainer استفاده کنی! و واسه فرم اصلی پروژه اونو true کنی! فک کنم مشکلت حل شه!

Mahmoud Zaad
پنج شنبه 28 اسفند 1393, 22:35 عصر
احتمالا منظور شما همون چیزی هست که دوستمون گفتند. می تونید از mdi (https://msdn.microsoft.com/en-us/library/d4dabts7%28v=vs.110%29.aspx) فرم ها استفاده کنید.

Mofid.m
پنج شنبه 28 اسفند 1393, 22:43 عصر
نه دوستان این مشکل منو حل نمیکنه
اونم انجام دادم بازم موقع minimize کردن میره تو نوار Taskbar جمع میشه.

Navid92
پنج شنبه 28 اسفند 1393, 22:51 عصر
خب بزار بیشتر توضیح بدم! بعد از IsMdiContainer که true کردی!
توی دکمه نمایش فرمی که میخوای نمایش بدی این کدو بنویس
form2 frm=new form2();
frm.MdiParent=this;
frm.show()

Mofid.m
پنج شنبه 28 اسفند 1393, 23:10 عصر
من فرم اصلی رو خاصیت IsMdiContainer رو true کردم.
و کدی که شما نوشتین رو هم نوشتم.
اما اصلا چیزی نشون نمیده
یعنی فرم رو نمایش نمیده.
فرم دومم خاصیت IsMdiContainer رو برابر False گذاشتم.

Navid92
پنج شنبه 28 اسفند 1393, 23:16 عصر
میشه کد دکمتون رو کپی کنید! ببینم!

Mofid.m
پنج شنبه 28 اسفند 1393, 23:24 عصر
FrmArticle FArticle = new FrmArticle();
FArticle.MdiParent = this;
FArticle.TopMost = true;
FArticle.Show();

Navid92
پنج شنبه 28 اسفند 1393, 23:35 عصر
خب اول خط topmost دیلیت کنید.
من الان رو سیستم خودم امتحان کردم! کار می کرد.
فرم رو که نشون نمیده ! خطا میده؟

Mofid.m
پنج شنبه 28 اسفند 1393, 23:45 عصر
ارو خطم Comment کردم اما بازم نمایش نمیده.
خطایی هم نمیده.

Navid92
پنج شنبه 28 اسفند 1393, 23:48 عصر
عجیبا غریبا
این فرم مستقیما از فرم اصلی باز میشه یا نه؟
یا نه از فزم اصلی میره به یه فرم بعد از اون فرم باز میشه؟

Mofid.m
پنج شنبه 28 اسفند 1393, 23:52 عصر
من دقیقا متوجه منظورتون نشدم.
از فرم اصلی باز میشه.
من کلا دوتا فرم دارم که دارم از تو فرم اصلی این فرم رو صدا میزنم.
در حالت عادی باز میشه و topmost هم کار میکنه.
اما این طوری نمایش نمیده

Navid92
پنج شنبه 28 اسفند 1393, 23:58 عصر
129594
این نگاه ! روی button2 نوشتم.

Mofid.m
جمعه 29 اسفند 1393, 00:10 صبح
دوست عزیز اولا تشکر بابت زحمتی که کشیدی.
ولی من هم دقیقا همین کارو کردم.
اما نمایش نمیده.
ولی یه موضوعی هست که احتمال داره برای اون باشه.
بزار یه امتحان کنم، نتیجشو بهت میگم.

Mofid.m
جمعه 29 اسفند 1393, 00:17 صبح
علتش اینه که فرم اصلی من یه فرم RibbonForm از نوع DevComponent هستش.