PDA

View Full Version : مشکل در کار با چند فرم



saeidgab
چهارشنبه 13 مرداد 1389, 12:28 عصر
سلام، من یک فرم دارم که میخوام از اون پنج تا شی(فرم) ایجاد کنم که هر کدوم مقادیر مربوط به خودشونو در کنترلهاشون نمایش بدن.تشخیص این که در کدوم فرم هستم هم با پنج تا متغییر Public بولین انجام میدم. اول هم فرم اول ظاهر میشه که در فرم میتونم بقیه فرمارو (2و3و4و5) رو ایجاد کنم.در سایر فرم ها هم به همین شکل میتونم به باقی فرم ها دسترسی اشته باشم. اگه یک فرم از قبل ایجاد شده بود فقط روی اون focus میکنم و دیگه ایجادش نمیکنم. مشکل اینجاست که وقتی فرم اول close میشه باقی فرمها هم close میشن.
لطفا راهنمایی کنید.

dr_jacky_2005
چهارشنبه 13 مرداد 1389, 12:53 عصر
سلام، من یک فرم دارم که میخوام از اون پنج تا شی(فرم) ایجاد کنم که هر کدوم مقادیر مربوط به خودشونو در کنترلهاشون نمایش بدن.تشخیص این که در کدوم فرم هستم هم با پنج تا متغییر Public بولین انجام میدم. اول هم فرم اول ظاهر میشه که در فرم میتونم بقیه فرمارو (2و3و4و5) رو ایجاد کنم.در سایر فرم ها هم به همین شکل میتونم به باقی فرم ها دسترسی اشته باشم. اگه یک فرم از قبل ایجاد شده بود فقط روی اون focus میکنم و دیگه ایجادش نمیکنم. مشکل اینجاست که وقتی فرم اول close میشه باقی فرمها هم close میشن.
لطفا راهنمایی کنید.

از mdiParent و mdiChild که اهیانا استفاده نکردی؟

saeidgab
چهارشنبه 13 مرداد 1389, 13:58 عصر
نه استفاده نکردم.

dr_jacky_2005
چهارشنبه 13 مرداد 1389, 14:45 عصر
نه استفاده نکردم.

آهاااااااااااان
فهمیدم.
چون فرم پیش فرض برنامتون اون form1 است.

برو تو program.cs

توو:


static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form2());
}
}

این خط رو عوض کن:
Application.Run(new Form2());

saeidgab
چهارشنبه 13 مرداد 1389, 15:28 عصر
آهاااااااااااان
فهمیدم.
چون فرم پیش فرض برنامتون اون form1 است.

برو تو program.cs

توو:


static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form2());
}
}

این خط رو عوض کن:
Application.Run(new Form2());
ممنون از توجهت، ولی به این شکل هم مشکل حل نمیشه چون وقتی Form 2 بسته شه بقیه هم بسته میشن، به عبارت دیگه پنج تا فرم دارم که میخوام وقتی همشون بسه شده برنامه end بشه در غیر اینصورت هر کدوم از این فرما که بالا بود اگه یه فرمو بستم برنامه end نشه.
دوباره ممنون از توجه و کمکت.

2ndesigner
چهارشنبه 13 مرداد 1389, 15:37 عصر
نمیشه فرم اصلی رو بست و از بقیه فرم ها استفاده کرد مگه این که فرم اصلی رو هاید کنی یا یا اینکه فرم اصلی نامرئی باشه و برنامه رو کنترل کنه.

dr_jacky_2005
چهارشنبه 13 مرداد 1389, 16:07 عصر
نمیشه فرم اصلی رو بست و از بقیه فرم ها استفاده کرد مگه این که فرم اصلی رو هاید کنی یا یا اینکه فرم اصلی نامرئی باشه و برنامه رو کنترل کنه.

منم موافقم.

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

به نظر منم بایدhidden کنی.

showInTaskBar را هم از property
false کن

saeidgab
چهارشنبه 13 مرداد 1389, 16:09 عصر
نمیشه فرم اصلی رو بست و از بقیه فرم ها استفاده کرد مگه این که فرم اصلی رو هاید کنی یا یا اینکه فرم اصلی نامرئی باشه و برنامه رو کنترل کنه.
خب چطور میتونم کلید close (ضربدر بالای صفحه) رو کنترل کنم که با زدنش صفحه hide بشه و بسته نشه؟

dr_jacky_2005
چهارشنبه 13 مرداد 1389, 16:37 عصر
خب چطور میتونم کلید close (ضربدر بالای صفحه) رو کنترل کنم که با زدنش صفحه hide بشه و بسته نشه؟


private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();

}

mahdi_7610
چهارشنبه 13 مرداد 1389, 16:42 عصر
کافیه توی رویداد FormClosing هر فرم دستور باز شدن فرمی که میخوای را بدی و فرمی که داخلش هستی را hide کنی


private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Form2 frm = new Form2();
this.Hide();
frm.ShowDialog();
}