PDA

View Full Version : فرم بسته بشه ! فرم باز بشه!



صباح فتحی
شنبه 16 مرداد 1389, 14:53 عصر
سلام من میخام وقتی روی دکمه ای کلیک کردم فرم close بشه بعدش show بشه
من اینو مینویسم اما دیگه میره و پیداش نمیشه:لبخند:چرا؟؟
this.hide();
this.show();

Mani_rf
شنبه 16 مرداد 1389, 14:58 عصر
می خوای فقط مخفی بشه دوباره نمایش داده بشه یا کلا بسته بشه؟
در هر صورت باید بین دو دستور یک فاصله زمانی کوتاه بی اندازی، حالا یا با یک حلقه For تو خالی، یا با تابع Sleep از کتابخانه Threding و یا با هر کار دیگه...

ایمان مدائنی
شنبه 16 مرداد 1389, 15:02 عصر
سلام من میخام وقتی روی دکمه ای کلیک کردم فرم close بشه بعدش show بشه
من اینو مینویسم اما دیگه میره و پیداش نمیشه:لبخند:چرا؟؟
this.hide();
this.show();
ميتوني از يه تايمر استفاده بكني !
اول هايد كن و تايمر رو استارت كن بعد از زماني كه ميخواي شو بشه !

صباح فتحی
شنبه 16 مرداد 1389, 15:06 عصر
نه هاید نمخام میخام کاملا بسته بشه!! امکان داره؟

Mani_rf
شنبه 16 مرداد 1389, 15:06 عصر
ميتوني از يه تايمر استفاده بكني !
اول هايد كن و تايمر رو استارت كن بعد از زماني كه ميخواي شو بشه !

نه برا تاخیر انداختن تایمر خیلی منطقی نیست، به هرحال تایمر یک شئی محسوب میشه.
برای این گونه تاخیر ها بهترین را Threading است.
مثال :


System.Threading.Thread.Sleep(100);


عدد داخل پرانتر میزان تاخیر بر واحد میلی ثانیه می باشد.

Mani_rf
شنبه 16 مرداد 1389, 15:07 عصر
نه هاید نمخام میخام کاملا بسته بشه!! امکان داره؟

در واقع میخوای ریست بشه؟

صباح فتحی
شنبه 16 مرداد 1389, 15:15 عصر
بله یه همچین چیزی!
من اینو نوشتم امانشد..cannot access disposet object
private void button2_Click(object sender, EventArgs e)
{
this.Close();
Thread.Sleep(2000);
this.Show();

}

Mani_rf
شنبه 16 مرداد 1389, 15:22 عصر
بعید میدونم از داخل یک فرم بشه خودش را بست ، دوباره باز کرد!!!
چیزی که به ذهن من میرسه اینه که یک Procedure بنویسی و اون را فراخوانی کنی که داخل اون فرم مورد نظر را ببنده و باز کنه ، البته اگر فرم مورد نظر شما فرم اصلی برنامه باشه قضیه خیلی فرق میکنه.

صباح فتحی
شنبه 16 مرداد 1389, 15:29 عصر
اقای مانی من مشکل اصلیم اینه:http://www.barnamenevis.org/forum/showthread.php?p=1059642#post1059642

ایمان مدائنی
شنبه 16 مرداد 1389, 15:30 عصر
شما درباره چيزي كه از برنامه ات مي خواهي بيشتر توضيح بده تا بتونيم كمكت كنيم !
دوستمون درست ميگن شما اگه فرمتون فرم اصلي باشه قضيه خيلي فرق ميكنه !
لطفا توضيحاتتون رو كامل كنيد !!!

saeedalg
شنبه 16 مرداد 1389, 15:31 عصر
خوب این کار که کردی هیچ وقت نمیشه، تو باید داخل یک کلاس دیگه اونو Close کنی و سپس دوباره اون رو new کنی بعد اون رو Show کنی، میتونی داخل خودش Close کنی اما دیگه همه اجزاش Dispose میشن و دوباره باید اونا init بشن یک رخداد OnClosed داره تو اون میتونی یه Event بفرستی به کلاسی که فرم رو نمایش داد و سپس فرم رو دوباره نمایش بدی.
مثلا کلاس backgroundworker داری توش فرم مربوطه رو باز میکنی حالا



myForm.Close();
// Thread.Sleep(x);
myForm = new Form1();
myForm.Show();

صباح فتحی
شنبه 16 مرداد 1389, 15:46 عصر
آقا سعید میشه بصورت یه application قرارش بدید..خیلی ممنون میشم

Mani_rf
شنبه 16 مرداد 1389, 15:57 عصر
خوب این کار که کردی هیچ وقت نمیشه، تو باید داخل یک کلاس دیگه اونو Close کنی و سپس دوباره اون رو new کنی بعد اون رو Show کنی، میتونی داخل خودش Close کنی اما دیگه همه اجزاش Dispose میشن و دوباره باید اونا init بشن یک رخداد OnClosed داره تو اون میتونی یه Event بفرستی به کلاسی که فرم رو نمایش داد و سپس فرم رو دوباره نمایش بدی.
مثلا کلاس backgroundworker داری توش فرم مربوطه رو باز میکنی حالا



myForm.Close();
// Thread.Sleep(x);
myForm = new Form1();
myForm.Show();



:متفکر: منم که همینو گفتم!!!

صباح فتحی
شنبه 16 مرداد 1389, 16:04 عصر
اقا من امتحانش کردم کار کرد ...اما اگه یه فرم داشته باشم چون فرم شروع برنامس نمیشه...

Mani_rf
شنبه 16 مرداد 1389, 16:14 عصر
اقا من امتحانش کردم کار کرد ...اما اگه یه فرم داشته باشم چون فرم شروع برنامس نمیشه...

این هم برای فرم اصلی :

Application.Restart();

saeedalg
یک شنبه 17 مرداد 1389, 12:21 عصر
این که گفتی فرم شروع برنامست احتمال میدم ربطی به لاگین داشته باشه که اگه اینجوری باشه معماریت غلطه، یه سری فرم لاگین تو همین سایت هست اونایی که آدمای قویتر تشکر کردن بابتش احتمالا خوب باشن از اونا استفاده کن، کلا هم میخوای یاد بگیری که برو معماری چند لایه رو یاد بگیر در مورد facad controller جستجو کنی پیدا میکنی CAB (http://www.microsoft.com/downloads/details.aspx?FamilyID=387c7a59-b217-4318-ad1b-cbc2ea453f40&displaylang=en) هم که خود مایکروسافت داده عالیه (البته من wpf و Silverlightش رو گذاشتم خود windows form رو هم بگردی کامپوننتش رو پیدا میکنی) اما ممکنه برای شروع سخت باشه.