PDA

View Full Version : سوال: کد برای دکمه Close فرم



ehsan123
سه شنبه 20 فروردین 1392, 19:29 عصر
سلام دوستان
می خوام زمانی که کاربر دکمه close اون دکمه بالا فرم(X)میزنه، کد اجرا بشه نه زمانی که فرم با کد this.close(); بسته میشه

veniz2008
سه شنبه 20 فروردین 1392, 19:36 عصر
سلام.
بیشتر توضیح میدی چی مد نظرته؟
چه کدی اجرا بشه؟

ehsan123
سه شنبه 20 فروردین 1392, 20:06 عصر
ببینید من می خوام کاربر اگه روی دکمه close فرم کلید کرد یه پیام بده اگه روی دکمه ای که روی فرم و در زیر اون کد this.close یه پیام دیگه بده و بعد فرم بسته شه

veniz2008
سه شنبه 20 فروردین 1392, 20:26 عصر
یه متغیر سراسری از نوع int تعریف کنید. مثلا int flag = 0 . درون دکمه مقدار متغیر رو 1 کنید و بعدش this.Close کنید.
در رویداد formClosing هم اینطور بنویسید:

if (flag == 0)
{
MessageBox.Show("ok");
}
else if (flag == 1)
{
MessageBox.Show("yes");
}

yashar666
سه شنبه 20 فروردین 1392, 20:31 عصر
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
MessageBox.Show("") ;
}
}
خوب این اگه رو اون ضرب در هم کلیک کنی پیام میده

ehsan123
سه شنبه 20 فروردین 1392, 20:52 عصر
ببینید من هدف این نیست فقط واسه روشن شدن موضوع گفتم یه چندتا راه از سایت های لاتین پیدا کردم اما خطا داره کد های زیر، من می خوام دقیق واسه دکمه ضربدر کد بنویسم

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/2683679/how-to-know-user-has-clicked-x-or-the-close-button

mrkp71
سه شنبه 20 فروردین 1392, 22:48 عصر
سلام و درود
کد اولی خطا داره، ایده ی خاصی ندارم ...

کد دوم کاربردی که شما میخواین نداره؛ معمولا وقتی استفاده میشه که بخوایم برای مدیریت ذخیره سازی و ذخیره ی خودکار ازش استفاده کنیم
یعنی اینکه بخوایم تشخیص بدیم برنامه به وسیله ی کاربر بسته میشه(به صورت عادی شامل X و UI و Alt + F4) یا به وسیله ی تسک منیجر یا هنگام شات دان شدن ویندوز یا هنگام بستن فرم مادر و یا ...
در کل یعنی این 2 مورد که شما میخواین تفکیک کنید در یک گروه قرار میگیرند یعنی CloseReason.UserClosing

پاینده باشید

veniz2008
سه شنبه 20 فروردین 1392, 22:48 عصر
ببینید من می خوام کاربر اگه روی دکمه close فرم کلید کرد یه پیام بده اگه روی دکمه ای که روی فرم و در زیر اون کد this.close یه پیام دیگه بده و بعد فرم بسته شه
پست 4 من دقیقا هیمن کاری رو انجام میده که شما گفتید.
نمیشه بگی 1 و دیگران وقت بذارن و به 1 پاسخ بدن و بعدش بگی نه منظورم 1 نیست و 2 رو میخوام.
یکبار دقیق منظورتون رو بگید تا تاپیک ببیهوده طولانی نشه و زودتر به جوابتون برسید.

ehsan123
سه شنبه 20 فروردین 1392, 23:34 عصر
با تشکر از نظرت دوست عزیز اگه بخوام توضیح بدم تو برنامه دقیقاً چه اتفاقی میافته و می خوام چی کار کنم نصفه صفحه باید توضیح بدم بعدم مطمئنم گیج میشید چون توضیحات کامل نیست.
به زبان ساده بگم من فقط می خوام واسه دکمه ضربدر خود فرم کد بنویسم همین ، که اون کد فقط با کلید روی ضربدر کامپایل شه نه با خروج فرم ! فکر کنم منظورم این دفع واضح گفتم خیلی ها سوال داشتن تو سایت ها که دنبال گشتم و هیچ کی هم به نتیجه نرسیده بود خودمم چند دفعه دنبالش و گرفتم اما هر سری از راه غیر حرفه یه راهی واسش پیدا کردم ممنون میشم دوستان نظر بدن

ali.bahrami
سه شنبه 20 فروردین 1392, 23:54 عصر
یعنی شما میخوای کدی بنویسی که اگر کاربر دکمه ضربدر را کلیک کرد به جای بسته شدن فرم اتفاق دیگه ای بیفته ؟؟ یعین کلا مثلا میخوای کار اون دکمه ضربدر را عوض کنی ؟

veniz2008
سه شنبه 20 فروردین 1392, 23:57 عصر
من متوجه نمیشم شما چی میخواید. امیدوارم دوستانی که منظور شما رو درک میکنن وارد بحث بشن و جواب مناسب رو به شما بدن.
ولی یک نکته رو میگم :
دکمه close مربوط به فرم ( ضربدر ) با رویداد form Closing ارتباط داره. پس اگر شما میخوای واسه اون دکمه کد بنویسید باید برید توی اون رویداد FormClosing کدتون رو بنویسید (یا صدا بزنید).
اگرم منظورتون اینه که نمیخواید فرم بسته بشه که باید تکه کد زیر رو در رویداد formclosing بنویسید :

e.Cancel = true;
موفق باشید.

ehsan123
جمعه 23 فروردین 1392, 13:12 عصر
یک نمونه برنامه میزارم دوستان من می خوام پیام ( خروج از برنامه ) فقط زمانی ظاهر بشه که کاربر دکمه ضربدر بالای فرم رو میزنه دکمه Exit هم فقط خارج بشه پیام و نشون نده همین

اینم نمونه

http://www.uplooder.net/cgi-bin/dl.cgi?key=bdf8c726514314127d3950221625ec92

veniz2008
جمعه 23 فروردین 1392, 13:31 عصر
توی پست 4، قسمت else رو پاک کن. اینطوری اگر بر روی دکمه ضریدر کلیک کنی پیغام نمایش داده میشه و اگر دکمه exit رو بزنی بدون نمایش پیغام فرم بسته میشه.

ehsan123
جمعه 23 فروردین 1392, 19:50 عصر
توی پست 4، قسمت else رو پاک کن. اینطوری اگر بر روی دکمه ضریدر کلیک کنی پیغام نمایش داده میشه و اگر دکمه exit رو بزنی بدون نمایش پیغام فرم بسته میشه.

دوست عزیز ممنون از پاسخ هاتون مشکل با همون روش شما تعریف متغییر حل شد و اما یه چیزی از تابع Form1_FormClosing فهمیدم که در هر صورت(چه با دکمه ضربدر فرم،چه با کد this.close،Alt+F4...) مقدار Sender در این تابع خود form ، که ظاهراً راهی جز تعریف متغییر سراسری در برنامه نیست بازهم از پاسخ های دوستان ممنونم