PDA

View Full Version : سوال: مشکل در بستن برنامه و فرمهای Hide شده به وسلیه دکمه ضربدر فرم



takgig
پنج شنبه 09 تیر 1390, 18:51 عصر
سلام

من یک فرم لاگین داشتم که موقع ورود Hide کردم.و الان که می خوام از فرم بعدی که واردش شدم وقتی ضربدر زده شد کل برنامه بسته شه(مخصوصاً اون فرم Hide).توی انجمن هم هر چی دیدم جواب نداد.(با Button می تونم خروج بسازم ولی با علامت ضربدر فرم که نتونستم) .

private void MainFr_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}

ijavad
پنج شنبه 09 تیر 1390, 19:01 عصر
با اجرای ()Application.Exit که در رویداد بالا نوشته اید کل نرم افزار بسته خواهد شد و فکر نکنم که مشکلی باشه

takgig
پنج شنبه 09 تیر 1390, 19:25 عصر
چک کردم اصلاً فرمانهای داخل رویداد اجرا نمی شه.یک سوال YesNo به جا Application.Exit گذاشتم ولی ضربدر رو که زدم بازم اتفاقی نیافتاد.

ijavad
پنج شنبه 09 تیر 1390, 19:39 عصر
نمی دونم ولی من از همین روش استفاده کردم جواب داد.
این مثال رو ببین
private void Form1_Load(object sender, EventArgs e)
{
this.Hide();
Form2 a = new Form2();
a.ShowDialog();
}

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}

Padrone
پنج شنبه 09 تیر 1390, 19:45 عصر
از این استفاده کن

Environment.Exit(0);

takgig
پنج شنبه 09 تیر 1390, 19:49 عصر
اینم زدم نشده.

ijavad
پنج شنبه 09 تیر 1390, 19:54 عصر
فایل پروژه رو ببین:71764

aghayex
پنج شنبه 09 تیر 1390, 20:18 عصر
اون کد رو در رویداد FormClosed بنویس نه در FormClosing

takgig
پنج شنبه 09 تیر 1390, 20:22 عصر
اینم قبلاً زدم نشده.

takgig
پنج شنبه 09 تیر 1390, 20:24 عصر
این مال فرم لاگینه :


private void btnSubmit_Click(object sender, EventArgs e)
{
if (txtUser.Text == "")
{
lblMsg.Text = "لطفاً نام کاربری را وارد نمایید!";
txtUser.Focus();
}
else if (txtPass.Text == "")
{
lblMsg.Text = "لطفاً کلمه عبور را وارد نمایید!";
txtPass.Focus();
}
else
{
SqlConnection cn = new SqlConnection();
cn.ConnectionString = "Data Source=(local);initial Catalog=HuaweiMaintenance;Integrated Security=SSPI";
SqlCommand cmd = new SqlCommand();
cn.Open();
cmd.Connection = cn;
string selstr = "select * from login where UId= '{0}' and Pass= '{1}'";
selstr = string.Format(selstr,txtUser.Text,txtPass.Text);
cmd.CommandText = selstr;
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
da.SelectCommand = cmd;
da.Fill(dt);
if(dt.Rows.Count>0)
{
this.Hide();
MainFr fm = new MainFr();
fm.ShowDialog();
}
else
{
MessageBox.Show( "نام کاربري و يا رمز عبور صحيح نمي باشد!");
txtUser.Text="";
txtPass.Text ="";
fault =fault+1;
if (fault == 3)
{
MessageBox.Show("تعداد خطا در وارد کردن اطلاعات بیش از حد مجاز است");
this.Close();
}
}


cn.Close();
}

}
}
}



اینم مال فرم دومم :

private void MainFr_FormClosing(object sender, FormClosingEventArgs e)
{
Environment.Exit(0);
}

doostl
پنج شنبه 09 تیر 1390, 20:57 عصر
سلام

ببین وقتی به یه دکمه دستور showdialog رو میدی وقتی به اون کد میرسه وارد اون صفحه می شه و بقیه ی کد (بعد از showdialog) رو اجرا نمی کن و زمانی اجراش میکنه که اون صفحه ای که باز شده بسته بشه حالا تو میتونی بعد ازshowdiallog تمام صفحه ها یه this.close() بزاری که وقتی اخرین صفحه رو بستی تک تک صفحه هارو می بنده

این شدنیه خودم امتحان کردم ولی اگه نشد بگو یه کلک رشتی دیگه بهت بگم

با تشکر doostl

takgig
پنج شنبه 09 تیر 1390, 21:01 عصر
دمت گرم بابت این نکته .جواب داد.

ازهمه دوستان بابت کمک ممنون.

doostl
پنج شنبه 09 تیر 1390, 21:17 عصر
سلام

ببین زمانی برای واز کردن یه فرم از showdialog استفاده کنی ادامه کد اون صفحه اجرا نمیشه تا زمانی که اون صفحه رو ببندی ، بهد خودکار میره ادامه صفحه . حالا تو باید بعد از showdialog هر فرم یه this.close() بزاری که وقتی آخرین صفحه رو بستی تک تک صفحه هارو ببنده .

با تشکر doostl

doostl
پنج شنبه 09 تیر 1390, 21:20 عصر
این شدنیه ولی اگه نشد بگو یه کلک رشتیه دگه بهت بگم

doostl
پنج شنبه 09 تیر 1390, 21:22 عصر
داداش دمت گرم این مرورگره مشکل داشت فک کردم نفرستادم دوباره از دسل نوشتم

aghayex
جمعه 10 تیر 1390, 10:19 صبح
دوست عزیز برداشت من از مشکل شما اینه که وقتی برنامه بالا میاد فرم اول مخفی میشه و فرم دوم به صورت showdialog نمایش داده می شه حالا شما می خاید وقتی فرم دوم رو با دکمه کلوز بستید برنامه کامل بسته بشه من هم اومدم همون کاری رو که در بالا بهتوت گفتم رو در برنامتون انجام دادم

arash_jeneral
جمعه 10 تیر 1390, 22:32 عصر
منم مشکل شما را داشتم نوشتم Application.ExitThread(); و حل شد