PDA

View Full Version : حرفه ای: مینیمایز کردن فرمها



zrahimic
دوشنبه 18 بهمن 1389, 12:05 عصر
با سلام.
من یه برنامه دارم که در آن تعدادی فرم مدال نمایش داده میشود و برخی از این فرمها درون فرمهای دیگر وجود دارن.

حالا من میخوام با زدن یه دکمه که در همه این فرمها وجود داره کل برنامه به صورت مینیمایز بشه.
از دستور FormWindowState هم که استفاده کنیم فقط یک فرم را مینیمایز میکنه.
اگر هم بیام هر فرم را با پدرش مینیمایز کنم، فرم فرزند بسته میشه.

در اینترنت که جستجو کردم به این دستور :



Shell32.ShellClass objShel = new Shell32.ShellClass();
// Show the desktop
((Shell32.IShellDispatch4)objShel).ToggleDesktop() ;


برخوردم که همون عمل دکمه Show Desktop را انجام میده.

ولی در این دستور مشکل برنامه اینه که بعضی وقتها درست کار میکنه ولی بعضی وقتها فقط taskbar رو نشون میده.

کسی میتونه راهنمایی کنه؟
ممنون

ali.rezaei7
دوشنبه 18 بهمن 1389, 13:15 عصر
درود. حلقه اول براي Minimize كردن فرمهاي فرزند و حلقه دوم براي Minimize كردن فرم هاي نرمال.

foreach (Form frm in this.MdiChildren)
frm.WindowState = FormWindowState.Minimized;
__________________________________________________ _

foreach (Form frm in Application.OpenForms)
frm.WindowState = FormWindowState.Minimized;

zrahimic
سه شنبه 19 بهمن 1389, 09:47 صبح
از پاسخ تون ممنون.

در مورد برنامه من حلقه دومی قابل استفاده است. ولی یه مشکلی که وجود داره اینه که بعضی وقتها فرم های فرزند میانی بسته میشوند.

برنامه من به این صورت هست که:
یه فرم اصلی وجود داره. از درون این فرم یک فرم مثلا به اسم "فرزند1" مدال میشه.
بعد از درون فرم "فرزند 1" یه فرم دیگه مثلا به اسم "فرزند 1-1" مدال میشه.
حالا وقتی من میخوام از درون فرم "فرزند 1-1" برنامه را مینیمایز کنم، فرم "فرزند 1" بسته میشه.
بعضی وقتها که هر دو فرم (یعنی هم فرم "فرزند 1" و هم فرم "فرزند 1-1") بسته میشود.
به نظرتون اشکال از کجاست؟

ali.rezaei7
سه شنبه 19 بهمن 1389, 10:46 صبح
میشه خواهش کنم این چیزایی که گفتید رو در قالب یه فایل پروژه تو سایت قرار بدید؟ این جوری هم منظورتونو بهتر درک می کنم و هم سریعتر به نتیجه می رسیم.

zrahimic
یک شنبه 24 بهمن 1389, 12:11 عصر
ممنون من از همون روشی که فرمودید با اعمال تغییراتی مشکل را حل کردم