سلام دوستان
می خوام زمانی که کاربر دکمه close اون دکمه بالا فرم(X)میزنه، کد اجرا بشه نه زمانی که فرم با کد this.close(); بسته میشه
سلام دوستان
می خوام زمانی که کاربر دکمه close اون دکمه بالا فرم(X)میزنه، کد اجرا بشه نه زمانی که فرم با کد this.close(); بسته میشه
سلام.
بیشتر توضیح میدی چی مد نظرته؟
چه کدی اجرا بشه؟
ببینید من می خوام کاربر اگه روی دکمه close فرم کلید کرد یه پیام بده اگه روی دکمه ای که روی فرم و در زیر اون کد this.close یه پیام دیگه بده و بعد فرم بسته شه
یه متغیر سراسری از نوع int تعریف کنید. مثلا int flag = 0 . درون دکمه مقدار متغیر رو 1 کنید و بعدش this.Close کنید.
در رویداد formClosing هم اینطور بنویسید:
if (flag == 0)
{
MessageBox.Show("ok");
}
else if (flag == 1)
{
MessageBox.Show("yes");
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
MessageBox.Show("") ;
}
}
خوب این اگه رو اون ضرب در هم کلیک کنی پیام میده
ببینید من هدف این نیست فقط واسه روشن شدن موضوع گفتم یه چندتا راه از سایت های لاتین پیدا کردم اما خطا داره کد های زیر، من می خوام دقیق واسه دکمه ضربدر کد بنویسم
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
if (string.Equals((sender as Button).Name, @"CloseButton")) .
else // Then assume that X has been clicked and act accordingly. }
یا
void Form_FormClosing(object sender, FormClosingEventArgs e) {
if(e.CloseReason == CloseReason.UserClosing) // Prompt user to save his data
if(e.CloseReason == CloseReason.WindowsShutDown) // Autosave and clear up ressources }
منبع کد های فوق
http://stackoverflow.com/questions/2...e-close-button
آخرین ویرایش به وسیله ehsan123 : سه شنبه 20 فروردین 1392 در 21:02 عصر
سلام و درود
کد اولی خطا داره، ایده ی خاصی ندارم ...
کد دوم کاربردی که شما میخواین نداره؛ معمولا وقتی استفاده میشه که بخوایم برای مدیریت ذخیره سازی و ذخیره ی خودکار ازش استفاده کنیم
یعنی اینکه بخوایم تشخیص بدیم برنامه به وسیله ی کاربر بسته میشه(به صورت عادی شامل X و UI و Alt + F4) یا به وسیله ی تسک منیجر یا هنگام شات دان شدن ویندوز یا هنگام بستن فرم مادر و یا ...
در کل یعنی این 2 مورد که شما میخواین تفکیک کنید در یک گروه قرار میگیرند یعنی CloseReason.UserClosing
پاینده باشید
با تشکر از نظرت دوست عزیز اگه بخوام توضیح بدم تو برنامه دقیقاً چه اتفاقی میافته و می خوام چی کار کنم نصفه صفحه باید توضیح بدم بعدم مطمئنم گیج میشید چون توضیحات کامل نیست.
به زبان ساده بگم من فقط می خوام واسه دکمه ضربدر خود فرم کد بنویسم همین ، که اون کد فقط با کلید روی ضربدر کامپایل شه نه با خروج فرم ! فکر کنم منظورم این دفع واضح گفتم خیلی ها سوال داشتن تو سایت ها که دنبال گشتم و هیچ کی هم به نتیجه نرسیده بود خودمم چند دفعه دنبالش و گرفتم اما هر سری از راه غیر حرفه یه راهی واسش پیدا کردم ممنون میشم دوستان نظر بدن
یعنی شما میخوای کدی بنویسی که اگر کاربر دکمه ضربدر را کلیک کرد به جای بسته شدن فرم اتفاق دیگه ای بیفته ؟؟ یعین کلا مثلا میخوای کار اون دکمه ضربدر را عوض کنی ؟
من متوجه نمیشم شما چی میخواید. امیدوارم دوستانی که منظور شما رو درک میکنن وارد بحث بشن و جواب مناسب رو به شما بدن.
ولی یک نکته رو میگم :
دکمه close مربوط به فرم ( ضربدر ) با رویداد form Closing ارتباط داره. پس اگر شما میخوای واسه اون دکمه کد بنویسید باید برید توی اون رویداد FormClosing کدتون رو بنویسید (یا صدا بزنید).
اگرم منظورتون اینه که نمیخواید فرم بسته بشه که باید تکه کد زیر رو در رویداد formclosing بنویسید :
e.Cancel = true;
موفق باشید.
یک نمونه برنامه میزارم دوستان من می خوام پیام ( خروج از برنامه ) فقط زمانی ظاهر بشه که کاربر دکمه ضربدر بالای فرم رو میزنه دکمه Exit هم فقط خارج بشه پیام و نشون نده همین
اینم نمونه
http://www.uplooder.net/cgi-bin/dl.c...3950221625ec92
توی پست 4، قسمت else رو پاک کن. اینطوری اگر بر روی دکمه ضریدر کلیک کنی پیغام نمایش داده میشه و اگر دکمه exit رو بزنی بدون نمایش پیغام فرم بسته میشه.
دوست عزیز ممنون از پاسخ هاتون مشکل با همون روش شما تعریف متغییر حل شد و اما یه چیزی از تابع Form1_FormClosing فهمیدم که در هر صورت(چه با دکمه ضربدر فرم،چه با کد this.close،Alt+F4...) مقدار Sender در این تابع خود form ، که ظاهراً راهی جز تعریف متغییر سراسری در برنامه نیست بازهم از پاسخ های دوستان ممنونم