PDA

View Full Version : حرفه ای: MdiParent



araz_pashazadeh
دوشنبه 13 آذر 1391, 19:10 عصر
باعرض سلام و خسته نباشید خدمت دوستان.
من در برنامه یک فرم پرنت دارم و فرمهای بعدی داخل اون باز میشن ولی وقتی از فرمی که باز شده فرم دقیهای را باز می کنم فرم سوم داخل فرم اصلی نیست بیرون چطوری می تونم همه فرم ها را داخل همون فرم اصلی باز کنم؟

saied_hacker
دوشنبه 13 آذر 1391, 19:15 عصر
خوب احتمال نگفتی که باید child باشه و parent ش رو مشخص نکردی دیگه دلیل دیگه ای نمی تونه داشته باشه

danialafshari
دوشنبه 13 آذر 1391, 19:37 عصر
اگر درست فهمیده باشم:
[نام فرم] frm=new [نام فرم]();
frm.mdiparent=this;
frm.show();

samadblaj
دوشنبه 13 آذر 1391, 22:07 عصر
اگر درست فهمیده باشم:
[نام فرم] frm=new [نام فرم]();
frm.mdiparent=this;
frm.show();

سلام ببخشید راهی هم برای این هست؟ توی فرم فرزندی که توی فرم پدر اجرا شده showdialog خطا میده... متد show برای یک فرم دیگه مشکل نداره اما اگه بخوایم همین کد رو showdialog کنیم مشکل داره...

this.Hide ();
Rgister1 f2 = new Rgister1();
f2.MdiParent = this.MdiParent;
f2.ShowDialog();

araz_pashazadeh
چهارشنبه 15 آذر 1391, 16:51 عصر
دوستان من فرم اول را که می خوام همه فرم ها داخل اون باز بشن از نوع پرنت انتخاب کردم در واقع true =IsMdiContainer کردم.
و فرم چایلد که قرار داخل فرم اصلی باشه با این تکه کد زنده می کنم:

Delivery Delivery = new Delivery();
Delivery.MdiParent = this;
Delivery.Show();


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

Mahmoud.Afrad
چهارشنبه 15 آذر 1391, 19:59 عصر
باعرض سلام و خسته نباشید خدمت دوستان.
من در برنامه یک فرم پرنت دارم و فرمهای بعدی داخل اون باز میشن ولی وقتی از فرمی که باز شده فرم دقیهای را باز می کنم فرم سوم داخل فرم اصلی نیست بیرون چطوری می تونم همه فرم ها را داخل همون فرم اصلی باز کنم؟

دوستان من فرم اول را که می خوام همه فرم ها داخل اون باز بشن از نوع پرنت انتخاب کردم در واقع IsMdiContainer = true کردم.
[و فرم چایلد که قرار داخل فرم اصلی باشه با این تکه کد زنده می کنم:
...
تا ایجای کار مشکل ندارم و فرم دوم داخل فرم اصلی وقتی از فرم دوم ، فرم سوم را صدا می زنم دیگه داخل فرم اصلی نیست بیرون از فرم اصلی وقتی هم مینیمایز میکنم بیرون از فرم می مونه.
چطوری میشه هر دو فرم که زنده می کنم داخل فرم اصلی باشه؟
باید mdiparent فرم سوم رو روی parent فرم دوم(یعنی فرم اول) تنظیم کنید.
اگر برای نمایش فرم2 به اینصورت عمل کردید:
Form2 frm2 = new Form2();
frm2.MdiParent = this;
frm2.Show();
حالا برای نمایش فرم3 از داخل فرم2 به اینصورت عمل کنید:
Form3 frm3 = new Form3();
frm3.MdiParent = this.MdiParent;
frm3.Show();



سلام ببخشید راهی هم برای این هست؟ توی فرم فرزندی که توی فرم پدر اجرا شده showdialog خطا میده... متد show برای یک فرم دیگه مشکل نداره اما اگه بخوایم همین کد رو showdialog کنیم مشکل داره...

this.Hide ();
Rgister1 f2 = new Rgister1();
f2.MdiParent = this.MdiParent;
f2.ShowDialog();

برای فرمهای mdi فرزند ، متد showdialog قابل اجرا نیست.

samadblaj
چهارشنبه 15 آذر 1391, 20:45 عصر
سلام دوست خوبم ممنون از کمکتون یه سوالی که هست| توی برنامه کاربر روی یک دمه کلیک میکنه فرم های متعددی براش باز میشه (تکراری) روشی برای جلوگیری از این عمل هست ؟

Mahmoud.Afrad
چهارشنبه 15 آذر 1391, 21:05 عصر
سلام دوست خوبم ممنون از کمکتون یه سوالی که هست| توی برنامه کاربر روی یک دمه کلیک میکنه فرم های متعددی براش باز میشه (تکراری) روشی برای جلوگیری از این عمل هست ؟

از application.openforms چک کن اگر قبلا وجود داشت نمایش بده اگر نه یک نمونه جدید بساز:

if (Application.OpenForms["Form2Name"] != null)
{
Application.OpenForms["Form2Name"].Show();
Application.OpenForms["Form2Name"].WindowState = FormWindowState.Normal;
}
else
{
Form2 frm2 = new Form2();
frm2.Name = "Form2Name";
frm2.MdiParent = this;
frm2.Show();
}

samadblaj
چهارشنبه 15 آذر 1391, 21:36 عصر
ـممنـــــونـــــم عالــــــــــــــــــــــ ــی ـبود

araz_pashazadeh
پنج شنبه 16 آذر 1391, 09:20 صبح
ممنون از راهنمایی سازنده شما.
من قابلیت ShowDialog را چطوری می تونم به فرم های که دارم باز می کنم اضافه کنم؟
برای من ترتیب قرار گیری فرم ها مهم هستش در واقع همون طور که در ShowDialog کاربرنمی تونه فرم های قبلی را انتخاب کنه ،تااین فرم بسته نشده به فرم قبلی نمی تونه بره.
من این قابلیت را چطوری می تونم اضافه کنم؟

Mahmoud.Afrad
پنج شنبه 16 آذر 1391, 10:12 صبح
private void button5_Click(object sender, EventArgs e)
{
if (Application.OpenForms["Form2Name"] == null)
{
Form2 frm2 = new Form2();
frm2.Name = "Form2Name";
frm2.TopMost = true;
frm2.MdiParent = this;
frm2.Show();

frm2.LostFocus += new EventHandler(frm2_LostFocus);
frm2.FormClosing += new FormClosingEventHandler(frm2_FormClosing);

foreach (Form frm in Application.OpenForms)
{
if (!( frm is Form1) && !( frm is Form2))
{
frm.Enabled = false;
}
}

// Here Disable Form1 controls ...
}
}

void frm2_LostFocus(object sender, EventArgs e)
{
Form frm = sender as Form;
frm.WindowState = FormWindowState.Normal;
frm.Focus();
}

void frm2_FormClosing(object sender, FormClosingEventArgs e)
{
foreach (Form frm in Application.OpenForms)
{
if (!(frm is Form1) && !(frm is Form2))
{
frm.Enabled = true;
}
}

// Here Enable Form1 controls
}

araz_pashazadeh
دوشنبه 20 آذر 1391, 15:01 عصر
باید mdiparent فرم سوم رو روی parent فرم دوم(یعنی فرم اول) تنظیم کنید.
اگر برای نمایش فرم2 به اینصورت عمل کردید:
Form2 frm2 = new Form2();
frm2.MdiParent = this;
frm2.Show();
حالا برای نمایش فرم3 از داخل فرم2 به اینصورت عمل کنید:
Form3 frm3 = new Form3();
frm3.MdiParent = this.MdiParent;
frm3.Show();



برای فرمهای mdi فرزند ، متد showdialog قابل اجرا نیست.

ممنون از راهنمایی شما من تکه کدهای بالا استفاده کردم ولی در فرم سوم من یک menuStrip دارم که متاسفانه نمایش داده نمی شه؟
وقتی frm3.MdiParent = this.MdiParent; را می بندم نمایش داده میشه دلیلش چیه؟
باید کار خاصی انجام بدم؟

araz_pashazadeh
پنج شنبه 30 آذر 1391, 15:40 عصر
با راهنمایی دوست عزیز تونستم مشکل MdiParent حل کنم ولی همانطور که می دانید در ShowDialog اجرای برنامه در این قسمت متوقف شده وقتی فرمی که
باز شده را می بندیم اجرای برنامه از قسمت ShowDialog به بعد اجرا میشه.
من این کار را چطور می تونم با استفاده از Show کردن فرم انجام بدم؟

ordebehesht
پنج شنبه 30 آذر 1391, 16:05 عصر
دوست من یه راهکار ساده میگم به این شکل عمل کن تا فرمت داخل در واقع زیرفرم فرم قبلیت باشه


[نام فرم] frm=new [نام فرم]();
frm.mdiparent=this;
frm.show(this);

araz_pashazadeh
پنج شنبه 30 آذر 1391, 18:48 عصر
دوست من یه راهکار ساده میگم به این شکل عمل کن تا فرمت داخل در واقع زیرفرم فرم قبلیت باشه


[نام فرم] frm=new [نام فرم]();
frm.mdiparent=this;
frm.show(this);




دوست عزیز من گفته شما را انجام دادم ولی با این خطا مواجه شدم!!!!
خطای که داده و کدی که نوشتم را درقالب عکس براتون گذاشتم.

ordebehesht
پنج شنبه 30 آذر 1391, 19:25 عصر
خط بالای متن خطا رو پاک کن ببین میشه اگه نشد کلمه this رو پاک کن ببین میشه

araz_pashazadeh
شنبه 02 دی 1391, 09:29 صبح
خط بالای متن خطا رو پاک کن ببین میشه اگه نشد کلمه this رو پاک کن ببین میشه

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

araz_pashazadeh
چهارشنبه 02 اسفند 1391, 16:04 عصر
من در برنامه از فرم 1، فرم2 را بازم میکنم کاربر حق انتخاب داره انتخاب فرم3 باز میشه می خوام تغییرانی که در فرم3 میده در فرم1 نمایش داده بشه.
چطوری میشه این کار را انجام داد البته بدون متغییر استاتیک؟

danialafshari
چهارشنبه 02 اسفند 1391, 16:28 عصر
می تونی از Setting.Setting هم استفاده کنی
تو سایت مطالبش زیاده جستجو کنید