PDA

View Full Version : reload کردن فرم و رویداد formClosed



smt_414
یک شنبه 04 شهریور 1386, 13:11 عصر
سلام به همه دوستان
یک سوال ساده داشتم
یک فرم برای دریافت اطلاعات وجود دارد که محتوی چند textbox و یک picbox است می خوام
ببینم چه شکلی میشه وقتی اطلاعات شخص دریافت شد و داخل پایگاه قرار گرفت با چه دستوری میشه فرم را reload کرد یعنی تمام textboxها و picbox خالی بشه و آماده دریافت اطلاعات جدید بشه.

سوال دوم در مورده رویدادهاست مثلا formClosed می خواستم بدونم چه شکلی میشه از اینها استفاده کرد و چه قابلیت هایی دارن.اگه یه مثال بزنید ممنون می شم

PC2st
یک شنبه 04 شهریور 1386, 16:49 عصر
در مورد سوال اول، دستور بخصوصی نداره، خودت باید محتویات همه کنترلها رو پاک کنی.

در مورد سوال دوم، اگر بخوای این کار رو از طریق کد انجام بدی:


this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);

که متد Form1_FormClosed به شکل زیر تعریف شده:


private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//...
}

رویداد FormClosed زمانی متد Form1_FormClosed رو اجرا میکنه که فرم بسته شده باشه.
رویداد FormClosing زمانی متد Form1_FormClosing رو اجرا میکنه که فرم بخواد بسته بشه (هنوز فم بسته نشده) و اینکه متد Form1_FormClosing باید از قبل تعریف شده باشه تا بتونه این متد رو صدا بزنه.

smt_414
یک شنبه 04 شهریور 1386, 22:41 عصر
سلام ممنونم ار راهنماییت
برای سوال اول جوابی پیدا کردم که ظاهرا کامل و جامع است و اون زمانی میشه استفاده کرد که که فرم جمع آوری اطلاعاتمون بعنوان فرم main برنامه نباشه
راه حل اینه که داخل همون فرم دوباره یکی مثله خودش رو ساخت و قبی رو بست
حالا سوالم از اساتید اینه که این راحل که (پتو مت بازی که نیست؟!)

private void bn_nextr_Click(object sender, EventArgs e)

{
Form2 record = new Form2();
record.Show();
this.Close();
}


یک را حل دیگه استفاده از رویداد formclosed بود به این صورت که reload کردن فرم یعنی = با بستن فرم یک فرم دیگه ازش ساخته شه
ولی خوب به این روش هیچوقت نتونستم فرمم رو ببندم و همیشه یک فرم دیگه جاش باز می شد
روشی هست که بشه حتی رویداد formclosed رو هر وقت که خواستیم , اجازه عمل بهش بدیم یعنی گاهی اوقات با بسته شدن فرم کار کنه و گاهی اوقات نه.
با تشکر

Amir Oveisi
دوشنبه 05 شهریور 1386, 00:20 صبح
به نظر من خالی کردن محتویات textbox ها بهتر و سریعتر از اینه که دوباره یه فرم جدید بسازی.
واسه سوال دوم هم بالاخره خودتون باید مشخص کنید که کی میخواین exit بشه ( بعد با یه شرط چک کنین ) ولی اگه از روش خالی کردن textbox های همون فرم اول استفاده کنین دیگه ای مشکل دوم رو هم ندارین

PC2st
دوشنبه 05 شهریور 1386, 00:56 صبح
منم موافقم، خالی کردن textBox ها و pictureBox ها هم سریعتره، هم ممکنه منطقی تر باشه، بخصوص وقتی که لود شدن فرم، خیلی طولانی باشه.

smt_414
سه شنبه 06 شهریور 1386, 13:08 عصر
سلام
خود من از روشی که گفتم استفاده کردم و زمان قابل مشاهده ای نیز برای لود کردن دوباره صفحه نگرفت
اما در مورد سوال دوم جواب کاملی نگرفتم
جه شکلی بتونیم formclosed رو در اختیار خودمون بگیریم ؟

rasoul_ras
سه شنبه 06 شهریور 1386, 14:51 عصر
اولا در مورد جواب سول اول باید بگم کاری که انجام دادید اصلا کار مناسبی نیست شما برای خالی کردن چند عدد text box & PicBox فرم رو می بندید و دوباره یک فرم رو با تمام خصویات جدید می سازید
شاید زمان زیادی نگیره ولی منطقی نیست
یک نگاهی به فایل زیر بنداز.


سوال دوم در مورده رویدادهاست مثلا formClosed می خواستم بدونم چه شکلی میشه از اینها استفاده کرد و چه قابلیت هایی دارن.اگه یه مثال بزنید ممنون می شمببین عزیزم کلا event ها در اصل آرایه ای از Delegate هستند
یعنی انها یکسری خبر هستند که پرتاب می شوند شما تصمیم می گیری که مثلا اگر فرم بسته شد من می خواهم چه کار کنم
در ضمن شما با سرچ کلمه event در Msdn می تونید اطلاعات جامعی از event ها بدست بیاری.
اگر قدرت بیانم ضعیف بود معذرت می خوام.