PDA

View Full Version : مبتدی: مشکل نمایش form بعدی



hhaaddii1363
جمعه 17 مهر 1394, 13:14 عصر
با سلام .
من یه form اصلی دارم که چند تا button داره توش و هر button هم مربوط به یه form میشه .
این کد من هستش

private void btn_enter_Click(object sender, EventArgs e)
{
frm_main frm = new frm_main();
this.Close();
frm.Show();
}

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

ژیار رحیمی
جمعه 17 مهر 1394, 14:39 عصر
تو رویداد کلیک دکمه در فرم اصلی این کد رو بنویس

Hide();
new Form1().ShowDialog();
Show();

محمد آشتیانی
جمعه 17 مهر 1394, 15:37 عصر
سلام
مثل پست شماره 3 این تاپیک عمل کنید
http://barnamenevis.org/showthread.php?463596-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D9%81%D8%B1%D9%85-%D8%A7%D8%B5%D9%84%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87&p=2075995&viewfull=1#post2075995


موفق باشید.

hhaaddii1363
جمعه 17 مهر 1394, 18:50 عصر
ببخشین نشد نمیشه از close استفاده کرد
اگه استفاده از hide منطقیه باشه من از hide استفاده می کنم
ولی چون چندین بار از یه فرم به فرم دیگه میرم گفتم شاید تو حافظه بمونه و برنامه با مشکل مواجه بشه

hhaaddii1363
جمعه 17 مهر 1394, 19:01 عصر
نه ببخشین آقای zagroti نشد نه شما گفتین

Hide();
new Form1().ShowDialog();
Show();




من می خوام از close به جای hide استفاده کنم ولی با close فرم رو نشون می ده ولی اتوماتیک بسته میشه

محمد آشتیانی
جمعه 17 مهر 1394, 20:01 عصر
ببخشین نشد نمیشه از close استفاده کرد
اگه استفاده از hide منطقیه باشه من از hide استفاده می کنم
ولی چون چندین بار از یه فرم به فرم دیگه میرم گفتم شاید تو حافظه بمونه و برنامه با مشکل مواجه بشه

سلام
شما اون لینکی که دادم رو مطالعه کردید؟ به ترتیب نوشتن دستورات دقت کردید؟
بعد از تغییرات Program.cs به این ترتیب باید عمل کنید


frm_main frm = new frm_main();
frm.Show();
this.Close();

hhaaddii1363
جمعه 17 مهر 1394, 20:25 عصر
نه نتونستم اون کد هایی که تو program نوشته بودین رو سرجای خودشون بنویسم
program من به این شکل هست

static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]


static void Main()
{
bool ok;
Mutex m = new Mutex(true, "برنامه من", out ok);
if (!ok)
{
MessageBox.Show("برنامه در حال اجرا است", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
return;
}

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new frm_selection()); // فرم اصلی که از این فرم به فرم های دیگه میرم


}

}

}

فرم هایی که من می خوام از فرم اصلی به اونا برم و برگردم 3 تا فرم هستش - frm_main - frm_factor - frm_memo
اسم فرم اصلی هم که عرض کردم frm_selection
سپاس

محمد آشتیانی
جمعه 17 مهر 1394, 20:40 عصر
فایل Program.cs رو به اینصورت اصلاح کنید

static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]


static void Main()
{
bool ok;
Mutex m = new Mutex(true, "برنامه من", out ok);
if (!ok)
{
MessageBox.Show("برنامه در حال اجرا است", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
return;
}


Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new MyContext());
}
}


public class MyContext : ApplicationContext
{
public MyContext()
{
Application.Idle += new EventHandler(Application_Idle);
frm_selection f1 = new frm_selection();
f1.Show();
}
void Application_Idle(object sender, EventArgs e)
{
if (Application.OpenForms.Count == 0)
Application.Exit();
}
}


حالا میخواید از فرم اصلی به فرم frm_memo برید

frm_memo f = new frm_memo();
f.Show();


this.Close();


برگشت هم همینه دیگه ، فقط اسم فرمی که میخوای نمایش بدی تغییر میکنه.

hhaaddii1363
جمعه 17 مهر 1394, 20:49 عصر
زنده باشین . مشکلم حل شد .
عرض بنده هم همین بود چون با hide شدن فرم کدهایی که برای بسته بودن فرم نوشته بودیم درست اجرا نمیشد .

ژیار رحیمی
جمعه 17 مهر 1394, 20:55 عصر
دوست گرامی وقتی شما فرم اصلی(فرمی که در کلاس program.cs به عنوان نقطه شروع برنامه گذاشته میشود بسته می شود کل برنامه بسته میشه) شما به لینکی که جناب آشتیانی گذاشته برو و طبق کدهای گذاشته شده کدهاتو بنویس.

hhaaddii1363
جمعه 17 مهر 1394, 21:26 عصر
ممنون مشکلم حل شد .