PDA

View Full Version : سوال: بازم مشکل پدر و فرزندی



elmira_63
شنبه 20 تیر 1388, 12:32 عصر
سلام دوستان

من یه فرم پدر و یه فرم فرزند دارم که توی این فرم پدر نشون داده می شه و windows state جفتشون برابر maximaized هستش من دوتا مشکل دارم

1) وقتی روی کلید مربوطه کلیک میکنم تا فرم فرزند باز بشه چطور چک کنم که این فرم قبلا باز نشده باشه

2) وقتی که فرم فرزند باز می شه با این که خواصیت form border style اون رو برابر none قرار دادم وقتی باز میشه نوار بالای فرم که کلید های maximized و minimized و close توشه رو نشون میده
من خواصیت form border style فرم پدر رو هم none کردم ولی وقتی فرم فرزند maximized باشه این نوار نشون داده میشه

ببخشید اگه سوالام خیلی حرفه ای و فوق العاده سخته :بامزه:

اینم عکسش

Reza_Yarahmadi
شنبه 20 تیر 1388, 13:09 عصر
وقتی روی کلید مربوطه کلیک میکنم تا فرم فرزند باز بشه چطور چک کنم که این فرم قبلا باز نشده باشه
Form f1;
if (Application.OpenForms["Form1"] == null)
f1 = new Form1();
else
f1 = Application.OpenForms["Form1"];
f1.MdiParent = this;
f1.Show();
وقتی که فرم فرزند باز می شه با این که خواصیت form border style اون رو برابر none قرار دادم وقتی باز میشه نوار بالای فرم که کلید های maximized و minimized و close توشه رو نشون میده
من خواصیت form border style فرم پدر رو هم none کردم ولی وقتی فرم فرزند maximized باشه این نوار نشون داده میشهتا جایی که میدونم این یکی از خاصیتهای فرم پدره و نمیشه اونو غیر فعال کرد. البته غیر فعال کردنش یه جورایی منطقی نیست. مثلا فرض کنید چند فرم فرزند دارید و همشونو باز کردید اگه این خاصیت غیر فعال باشه یه مقدار سخت میشه بینشون جابجا شد! اگه یه منو استاندارد داشته باشید گزینه های Minimize و ... توی اون منو نمایش داده میشه!!!

Xcalivorse
شنبه 20 تیر 1388, 13:22 عصر
خاصيت WindowState فرمت رو Normal كن و براي باز كردنش به صورت تمام صفحه سايز فرم Chid رو يا فرم Parent تنظيم كن



Form2 Frm = new Form2();
Frm.MdiParent = this;
Frm.Top = 0;
Frm.Left = 0;
Frm.Height = this.Height - 63;
Frm.Width = this.Width - 13;

Frm.Show();

Xcalivorse
شنبه 20 تیر 1388, 13:23 عصر
براي اطمينان از باز نبودن فرم مورد نظرتون از آلگوريتم سينگلتون استفاده كنيد. توي تاپيك 1001 نكته آموزش داده شده.

elmira_63
یک شنبه 21 تیر 1388, 17:09 عصر
Form f1;
if (Application.OpenForms["Form1"] == null)
f1 = new Form1();
else
f1 = Application.OpenForms["Form1"];
f1.MdiParent = this;
f1.Show();

از این کد و دهها کد دیگه که توی سایت هست استفاده کردم ولی هر کدومش یه مشکلی داشت مثلا مشکل کد بالا این بود که اگه یه فرم رو از توی منوهام باز می کردم و بدون بستن اون میرفتم یه فرم دیگه رو باز می کردم و برمی گشتم همون فرم قبلی رو باز کنم باز نمی شه
ببینید من 10 ، 15 تا فرم دارم که همشون فرزند فرم اصلی برنامم هست
من میخوام با انتخاب هر منو اگه فرمی باز هستش بسته بشه و فرم مربوط به اون منو باز بشه در ضمن وقتی باز میشه فرم فرزند کل فرم پدر رو پر کنه

elmira_63
دوشنبه 22 تیر 1388, 08:26 صبح
کسی نیست مارو دریابه ؟؟؟؟

Reza_Yarahmadi
پنج شنبه 25 تیر 1388, 12:47 عصر
اگر میخواید قبل از باز کردن هر فرم بقیه فرمها رو ببندید کافیه قبل از باز کردن هر فرم کد زیر رو بنویسی


for (int i = 1; i < Application.OpenForms.Count; i++)
Application.OpenForms[i].Close();