PDA

View Full Version : سوال: مدیریت Maximaz & Minimiz فرم ها در پنجره اصلی



ostovarit
پنج شنبه 20 خرداد 1389, 17:23 عصر
با سلام و خسته نباشید

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

2 برای جلوگیری از اینکه با کلیک روی فرم اصلی فرمهای دیگر به زیر آن نرود ( برای اینکه فرمهای دیگه همیشه روی فرم اصلی باشد ) چه باید بکنم ... ؟

3 چطور وقتی پنجره ای کوچیک ( Minimiz ) میشه همانند فتوشاپ اون رو به گوشه ای از صفحه اصلی به صورت یک باکس کوچیک نگه داریم نه اینکه روی نوار وظایف ویندوز مینیمایز بشه؟
عکس زیر نمونه ای از محیط فتوشاپ و صفحه مینیمایز شده رو نمایش میده:
http://www.thegraphicsandmorestore.com/adobe-photoshop.jpg

نکته : موارد 1و2 با SowDialog کردن فرم ها حل میشد ولی در اون حالت فقط یک فرم متونست باز باشه که مطابق میل من نیست و میخوام کاربر بتونه چند فرم رو همزمان روی فرم اصلی باز کنه ...

s.khoshfekran
پنج شنبه 20 خرداد 1389, 17:26 عصر
3- میتونی از Child From استفاده کنی!

ostovarit
پنج شنبه 20 خرداد 1389, 19:01 عصر
3- میتونی از Child From استفاده کنی!

لطفا بیشتر توضیح بدید اگر امکانش هست یک نمونه برام بزارید ممنون میشم

super_sonic
شنبه 22 خرداد 1389, 08:47 صبح
سلام
اميدوارم منظورتو درست فهميده باشم.
ميتوني از;() showdialog استفاده كني
تا زماني كه فرم آخري كه باز شده را نبندي فرم قبلي باز شده قابل دسترسي نيست.

ostovarit
شنبه 22 خرداد 1389, 10:30 صبح
سلام
اميدوارم منظورتو درست فهميده باشم.
ميتوني از;() showdialog استفاده كني
تا زماني كه فرم آخري كه باز شده را نبندي فرم قبلي باز شده قابل دسترسي نيست.

سلام
من تو توضیحاتم نوشتم که از این متد استفاده کردم ولی وقتی صفحه ای رو باز میکنی به فرم اصلی دیگه دسترسی نداری و نمی تونی همزمان چند صفحه رو باز کنی که این مد نظر من نیست
در هر صورت از راهنماییت ممنونم.

exlord
شنبه 22 خرداد 1389, 10:54 صبح
با سلام و خسته نباشید

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

2 برای جلوگیری از اینکه با کلیک روی فرم اصلی فرمهای دیگر به زیر آن نرود ( برای اینکه فرمهای دیگه همیشه روی فرم اصلی باشد ) چه باید بکنم ... ؟

3 چطور وقتی پنجره ای کوچیک ( Minimiz ) میشه همانند فتوشاپ اون رو به گوشه ای از صفحه اصلی به صورت یک باکس کوچیک نگه داریم نه اینکه روی نوار وظایف ویندوز مینیمایز بشه؟
عکس زیر نمونه ای از محیط فتوشاپ و صفحه مینیمایز شده رو نمایش میده:
http://www.thegraphicsandmorestore.com/adobe-photoshop.jpg

نکته : موارد 1و2 با SowDialog کردن فرم ها حل میشد ولی در اون حالت فقط یک فرم متونست باز باشه که مطابق میل من نیست و میخوام کاربر بتونه چند فرم رو همزمان روی فرم اصلی باز کنه ...

1 -

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (Application.OpenForms.Count > 1)
e.Cancel = true;
}
2 -
تو فرم اصلی

this.IsMdiContainer = true;
3 -
وقتی داری از فرم های دیگه new میکنی ...

Form2 frm2 = new Form2();
frm2.MdiParent = this;
frm2.Show();

ostovarit
دوشنبه 24 خرداد 1389, 17:25 عصر
با تشکر از پاسخ چند سوال دیگه هم هست :

1- برای اینکه یک فرم بیش از یک بار باز نشود ... یعنی اگر بازه دیگه باز نشه! چه باید کرد؟

2- من میخوام با کد زیر یک فرم رو داخل فرم اصلیم نمایش بدم :


AForm3 af3 = new AForm3();
af3.Show();

اگر از ShowDialog استفاده کنم فقط یک صفحه رو میتونم باز کنم چون دسترسی به منو ندارم
اگر هم از IsMdiContainer = true استفاده کنم چون در صفحه اصلیم دو منو در دو طرف صفحه دارم وقتی فرمی جدید باز میکنم با حرکت فرمها در صفحه بخشی از فرم به زیر منوهای داخل صفحه اصلی میرود ...
برای جلو گیری از این موضوع ایا راهی وجود دارد که ما در فرمی که به عنوان Child باز میشود تعریف کنیم که اگر روی فرم اصلی کلیک شد به زیر ان نرود؟

exlord
دوشنبه 24 خرداد 1389, 18:55 عصر
public static class FormHandler
{
public static void ShowMeOnce(this Form mdiChild, Form mdiParent)
{
foreach (Form frm in mdiParent.MdiChildren)
{
if (frm.GetType() == mdiChild.GetType())
return;
}
mdiChild.Show();
}


public static void ShowMeOnce(this Form FormToOpen)
{
foreach (Form frm in Application.OpenForms)
{
if (frm.GetType() == FormToOpen.GetType())
return;
}
FormToOpen.Show();
}
}



Form1 frm = new Form1();
frm.ShowMeOnce();

exlord
دوشنبه 24 خرداد 1389, 21:11 عصر
ارور داد یا اصلا کار نکرد یا چی؟

ostovarit
دوشنبه 24 خرداد 1389, 21:25 عصر
ارور داد یا اصلا کار نکرد یا چی؟

کار نکرد ... هیچ اروری نداشتم !

تصمیم گرفتم از همون روشی که اول شما فرمودی کارم رو انجام بدم در اون حالت تمامی مشکلات مطرح شده رفع میشه جز یکی:

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

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

اگر نه که باید دنبال روش دوم باشم