PDA

View Full Version : بستن پنجره به صورت شرطی در سی شارپ



rahman65
پنج شنبه 09 مرداد 1393, 12:44 عصر
با سلام خدمت همه عزیزان

من یک فرم در سی شارپ ایجاد کردم و میخوام با استفاده از یک مسیج باکس این فرم رو به صورت شرطی close کنم

به این صورت که:

اگه دکمه yes در مسیج باکس رو بزنم فرم بسته بشه
ودر صورتی که دکمه no فشرده میشه در همون فرم بمونه

برای همین من این کد رو در ایونت form close به صورت زیر نوشتم
private void Form3_FormClosed(object sender, FormClosedEventArgs e) {




if (MessageBox.Show("آیا شما قصد خروج از برنامه را دارید؟", "?سوال", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit();




}

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

ولی وقتی no رو میزنم باز از فرم خارج میشه وبرنامه در حالت runnig باقی میمونه

من چه کدی بنویسم که وقتی no رو زدم در فرم بمونم وفرم بسته نشه

با تشکر از همه

abbas.oveissi
پنج شنبه 09 مرداد 1393, 12:50 عصر
با سلام خدمت همه عزیزان

من یک فرم در سی شارپ ایجاد کردم و میخوام با استفاده از یک مسیج باکس این فرم رو به صورت شرطی close کنم

به این صورت که:

اگه دکمه yes در مسیج باکس رو بزنم فرم بسته بشه
ودر صورتی که دکمه no فشرده میشه در همون فرم بمونه

برای همین من این کد رو در ایونت form close به صورت زیر نوشتم
private void Form3_FormClosed(object sender, FormClosedEventArgs e) {




if (MessageBox.Show("آیا شما قصد خروج از برنامه را دارید؟", "?سوال", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit();




}

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

ولی وقتی no رو میزنم باز از فرم خارج میشه وبرنامه در حالت runnig باقی میمونه

من چه کدی بنویسم که وقتی no رو زدم در فرم بمونم وفرم بسته نشه

با تشکر از همه
کدتون رو باید در رویداد FormClosing بنویسید.بعد اگر که جواب Yes بود نیازی به انجام کار خاصی نیست ولی اگر No بود یاد e.Cancel رو برابر True قرار دهید.

rahman65
پنج شنبه 09 مرداد 1393, 15:30 عصر
کدتون رو باید در رویداد FormClosing بنویسید.بعد اگر که جواب Yes بود نیازی به انجام کار خاصی نیست ولی اگر No بود یاد e.Cancel رو برابر True قرار دهید.

با سلام وتشکر از لطف شما

من به همهان صورتی که شما فرمودید کد رو نوشتم

الان هنگامی که no رو میزنم پنجره بسته نمیشه(همانطوری که من میخواستم)

ولی وقتی yes رو میزنم درسته که پنجره بسته میشه ولی برنامه در حالت running میمونه (از حالت اجرا در نمیاد ) این مشکل رو چیکار کنم
؟

rahman65
پنج شنبه 09 مرداد 1393, 16:46 عصر
لطفاً یکی جواب بده ممنون

rahman65
پنج شنبه 09 مرداد 1393, 17:12 عصر
با تشکر از همه

آخر سر باید کد رو اینطوری بنویسیم

private void Form3_FormClosing(object sender, FormClosingEventArgs e) {
if (MessageBox.Show("آیا شما قصد خروج از برنامه را دارید؟", "?سوال", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)


e.Cancel = true;
else
Application.ExitThread();




}

نکته:
حتما باید
Application.ExitThread();
بنویسید اگه
Application.Exit();
بنوسید جواب نمیده

با تشکر از لطف همه

محمد آشتیانی
پنج شنبه 09 مرداد 1393, 20:58 عصر
سلام
کافیه تو رویداد FormClosing فقط حالت DialogResult.No رو کنترل کنی ، مثل این


if (MessageBox.Show("آیا شما قصد خروج از برنامه را دارید؟", "?سوال", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}

امیر مهرشاد
پنج شنبه 09 مرداد 1393, 23:17 عصر
یا این کد رو در خاصیت کلوز فرم ننوسید در کلیک باتن بیارید