باعرض سلام و خسته نباشید خدمت دوستان.
من در برنامه یک فرم پرنت دارم و فرمهای بعدی داخل اون باز میشن ولی وقتی از فرمی که باز شده فرم دقیهای را باز می کنم فرم سوم داخل فرم اصلی نیست بیرون چطوری می تونم همه فرم ها را داخل همون فرم اصلی باز کنم؟
باعرض سلام و خسته نباشید خدمت دوستان.
من در برنامه یک فرم پرنت دارم و فرمهای بعدی داخل اون باز میشن ولی وقتی از فرمی که باز شده فرم دقیهای را باز می کنم فرم سوم داخل فرم اصلی نیست بیرون چطوری می تونم همه فرم ها را داخل همون فرم اصلی باز کنم؟
خوب احتمال نگفتی که باید child باشه و parent ش رو مشخص نکردی دیگه دلیل دیگه ای نمی تونه داشته باشه
اگر درست فهمیده باشم:
[نام فرم] frm=new [نام فرم]();
frm.mdiparent=this;
frm.show();
سلام ببخشید راهی هم برای این هست؟ توی فرم فرزندی که توی فرم پدر اجرا شده showdialog خطا میده... متد show برای یک فرم دیگه مشکل نداره اما اگه بخوایم همین کد رو showdialog کنیم مشکل داره...
this.Hide ();
Rgister1 f2 = new Rgister1();
f2.MdiParent = this.MdiParent;
f2.ShowDialog();
دوستان من فرم اول را که می خوام همه فرم ها داخل اون باز بشن از نوع پرنت انتخاب کردم در واقعtrue =IsMdiContainerکردم.
و فرم چایلد که قرار داخل فرم اصلی باشه با این تکه کد زنده می کنم:
Delivery Delivery = new Delivery();
Delivery.MdiParent = this;
Delivery.Show();
تا ایجای کار مشکل ندارم و فرم دوم داخل فرم اصلی وقتی از فرم دوم ، فرم سوم را صدا می زنم دیگه داخل فرم اصلی نیست بیرون از فرم اصلی وقتی هم مینیمایز میکنم بیرون از فرم می مونه.
چطوری میشه هر دو فرم که زنده می کنم داخل فرم اصلی باشه؟
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 16 دی 1394 در 13:52 عصر
باید 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 قابل اجرا نیست.
سلام دوست خوبم ممنون از کمکتون یه سوالی که هست| توی برنامه کاربر روی یک دمه کلیک میکنه فرم های متعددی براش باز میشه (تکراری) روشی برای جلوگیری از این عمل هست ؟
از 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();
}
ـممنـــــونـــــم عالــــــــــــــــــــــ ــی ـبود
ممنون از راهنمایی سازنده شما.
من قابلیت ShowDialog را چطوری می تونم به فرم های که دارم باز می کنم اضافه کنم؟
برای من ترتیب قرار گیری فرم ها مهم هستش در واقع همون طور که در ShowDialog کاربرنمی تونه فرم های قبلی را انتخاب کنه ،تااین فرم بسته نشده به فرم قبلی نمی تونه بره.
من این قابلیت را چطوری می تونم اضافه کنم؟
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
}
با راهنمایی دوست عزیز تونستم مشکل MdiParent حل کنم ولی همانطور که می دانید در ShowDialog اجرای برنامه در این قسمت متوقف شده وقتی فرمی که
باز شده را می بندیم اجرای برنامه از قسمت ShowDialog به بعد اجرا میشه.
من این کار را چطور می تونم با استفاده از Show کردن فرم انجام بدم؟
دوست من یه راهکار ساده میگم به این شکل عمل کن تا فرمت داخل در واقع زیرفرم فرم قبلیت باشه
[نام فرم] frm=new [نام فرم]();
frm.mdiparent=this;
frm.show(this);
خط بالای متن خطا رو پاک کن ببین میشه اگه نشد کلمه this رو پاک کن ببین میشه
دوست عزیز اینو من خودم می دونم در بالا هم به این نکته اشاره کردم.
من می خوام فرم به شکل پرنت بمونه واطلاعاتی که در فرم سوم وارد کردم هنگام بسته شدن فرم در فرم دوم اعمال بشه.
از رخدادهای متفاوتی استفاده کردم ولی تا وقتی در فرم دوم کلیک نکردم یا کاری انجام ندادم اعمال نمی شه.
من در برنامه از فرم 1، فرم2 را بازم میکنم کاربر حق انتخاب داره انتخاب فرم3 باز میشه می خوام تغییرانی که در فرم3 میده در فرم1 نمایش داده بشه.
چطوری میشه این کار را انجام داد البته بدون متغییر استاتیک؟
می تونی از Setting.Setting هم استفاده کنی
تو سایت مطالبش زیاده جستجو کنید