PDA

View Full Version : مبتدی: بستن فرم ها



jigily
پنج شنبه 29 بهمن 1388, 11:24 صبح
من دو تا فرم دارم روي فرم اول يك دكمه گذاشتم و بهش ميگم كه وقتي روي اون كليك ميشه به فرم دوم بره خوب اين كار ميكنه اما صفحه قبل كه دكمه روش بوده را هر كاري ميكنم نميبنده... بايد از چه كدي استفاده كنم؟

hamidreza20
پنج شنبه 29 بهمن 1388, 11:49 صبح
سلام دوست عزیز از showdialog استفاده می کنی یا show ؟

میلاد قاضی پور
پنج شنبه 29 بهمن 1388, 11:55 صبح
تا اونجایی که من میدونم این مشکل بارها مطرح شده و تقریبا پاسخ ساده ای نداره . خروج کامل از فرم اول به معنی خروج از برنامه هست . اگه نوتیفای آیکون برای فرم اولت قرار بدی متوجه میشی هر کاری بکنی فرم اولت بالاخره تو حافظه جا اشغال میکنه . البته اساتید شاید نظر دیگه ای داشته باشن . من یکبار توی این سایت کامپوننتی برای اینکار پیدا کردم .

jigily
پنج شنبه 29 بهمن 1388, 12:34 عصر
سلام دوست عزیز از showdialog استفاده می کنی یا show ؟
از showdialog

jigily
پنج شنبه 29 بهمن 1388, 12:36 عصر
تا اونجایی که من میدونم این مشکل بارها مطرح شده و تقریبا پاسخ ساده ای نداره . خروج کامل از فرم اول به معنی خروج از برنامه هست . اگه نوتیفای آیکون برای فرم اولت قرار بدی متوجه میشی هر کاری بکنی فرم اولت بالاخره تو حافظه جا اشغال میکنه . البته اساتید شاید نظر دیگه ای داشته باشن . من یکبار توی این سایت کامپوننتی برای اینکار پیدا کردم .
خودمم حدس زدم كه فرم اول نبايد بسته بشه..اما اين مشكل براي برعكس اين موضوع هم وجود داره يعني اگه فرم دوم بخوام با باز شدن يك صفحه جديد يا صفحه اول ببندم بازم نميشه...

jigily
پنج شنبه 29 بهمن 1388, 12:37 عصر
:متفکر::متفکر::متفکر:

jigily
پنج شنبه 29 بهمن 1388, 12:41 عصر
this.Hide();
اين كد باعث ميشه كه اون صفحه كاملا بسته بشه يا فقط از ديد كاربر مخفي نگهش ميداره؟

FastCode
پنج شنبه 29 بهمن 1388, 13:16 عصر
اين كد باعث ميشه كه اون صفحه كاملا بسته بشه يا فقط از ديد كاربر مخفي نگهش ميداره؟

فقط از ديد كاربر مخفی نگهش ميداره.

s.Jabbari
پنج شنبه 29 بهمن 1388, 13:49 عصر
اگر میخوای این کار رو روی فرم اصلی برنامت انجام بدی امکان پذیر نیست!!چون فرم اصلی نقطه شروع برنامه هست و با بسته شدنش کل یرنامه ات بسته میشه...
اما اگه بخوای این کار رو روی فرمهایی غیر ار فرم اصلی انجام بدی توی رویداد formcliosing فرم اول یک نمونه از فرم دوم بساز و Show کن(تو رویداد formclosing اینو بنویس)


form2 f=new form2();
f.show();

SMRAH1
پنج شنبه 29 بهمن 1388, 14:37 عصر
سلام
این سئوال (یا شبیه به این) بار ها مطرح شده.یک راه حل رو در این مقاله (http://barnamenevis.org/forum/showpost.php?p=605332&postcount=150) می تونی پیدا کنی.
موفق باشی

jigily
پنج شنبه 29 بهمن 1388, 21:48 عصر
من با this.hide تونستم مشكلم حل كنم اما مشكلش اينه كه حافظه را خالي نمينه...
تو اون مقاله ها هم چيزي نبود.؟
كسي راهه ديگه ميدونه؟

jigily
پنج شنبه 29 بهمن 1388, 21:50 عصر
اگر میخوای این کار رو روی فرم اصلی برنامت انجام بدی امکان پذیر نیست!!چون فرم اصلی نقطه شروع برنامه هست و با بسته شدنش کل یرنامه ات بسته میشه...
اما اگه بخوای این کار رو روی فرمهایی غیر ار فرم اصلی انجام بدی توی رویداد formcliosing فرم اول یک نمونه از فرم دوم بساز و Show کن(تو رویداد formclosing اینو بنویس)



form2 f=new form2();




f.show();


نميدونم چرا نشد يعني فرم بسته نشد؟؟؟

jigily
چهارشنبه 05 اسفند 1388, 17:57 عصر
كسي جواب ديگه اي نداره؟؟

mrshcom
چهارشنبه 05 اسفند 1388, 21:23 عصر
چرا میشه من برات یه نمونه برنامه میزارم که همون چیزیه که میخوای با زدن دکمه روی فرم 1 این فرم کاملا بسته میشه و فرم 2 باز میشود....

Mohandes2009
پنج شنبه 06 اسفند 1388, 21:10 عصر
Form2 from = new Form2();
from.FormClosed += new FormClosedEventHandler(SwichT0NextForm);
this.Hide();
from.Show();




private void SwichT0NextForm(object sender, FormClosedEventArgs e)
{
this.Show();
}

Himalaya
شنبه 08 اسفند 1388, 09:22 صبح
یه نمونه برات میزارم...فکر کنم ارژنگ فرستاده بود در مورد فرم لاگین...
کارشم اینطوریه که تو فایل program.cs اجازه باز شدن فرم ّForm1 رو در صورتی میده که تو فرم LoginForm
، یوزر و پس درست باشه .در این صورت فرم LoginForm بسته میشه و تازه Form1 باز میشه
چیزی که میخوای شاید دقیقا این نباشه ولی میتونه بهت اید بده. مطمئنا کارتو راه میندازه
http://www.elook.ir/LoginFormExample.zip

jigily
شنبه 08 اسفند 1388, 10:19 صبح
Form2 from = newForm2();
from.FormClosed += newFormClosedEventHandler(SwichT0NextForm);
this.Hide();
from.Show();




privatevoid SwichT0NextForm(object sender, FormClosedEventArgs e)
{
this.Show();
}



اين كاملا ميبنده يا فقط hide ميكنه؟؟
بعدش اينكه وقتي ميخوام صفحه اولم ببندم بازم صفحه اي كه باز كردم مياد و اون نميبنده...؟؟

jigily
شنبه 08 اسفند 1388, 10:34 صبح
یه نمونه برات میزارم...فکر کنم ارژنگ فرستاده بود در مورد فرم لاگین...
کارشم اینطوریه که تو فایل program.cs اجازه باز شدن فرم ّForm1 رو در صورتی میده که تو فرم LoginForm
، یوزر و پس درست باشه .در این صورت فرم LoginForm بسته میشه و تازه Form1 باز میشه
چیزی که میخوای شاید دقیقا این نباشه ولی میتونه بهت اید بده. مطمئنا کارتو راه میندازه
http://www.elook.ir/LoginFormExample.zip
من چيزي پيدا نكردم كذوم قسمتشه؟در مورد بسته شدن؟

jigily
شنبه 08 اسفند 1388, 10:37 صبح
چرا میشه من برات یه نمونه برنامه میزارم که همون چیزیه که میخوای با زدن دکمه روی فرم 1 این فرم کاملا بسته میشه و فرم 2 باز میشود....

برنامه اي كه داديد فقط كد this.close داره..بقيش چي شده؟

mrshcom
شنبه 08 اسفند 1388, 11:26 صبح
برنامه اي كه داديد فقط كد this.close داره..بقيش چي شده؟

سلام
بقيش تو program.cs هست كديه كه بعد از بسته شدن فرم1 بطور كامل فرم2 مياد بالا.
اميدوارم برات مفيد باشه دوست عزيز...
موفق باشي

jigily
شنبه 08 اسفند 1388, 11:42 صبح
سلام
بقيش تو program.cs هست كديه كه بعد از بسته شدن فرم1 بطور كامل فرم2 مياد بالا.
اميدوارم برات مفيد باشه دوست عزيز...
موفق باشي
مرسي.. من كد اجرا كردم . فرم اول بطور كامل ميبنده.. اما براي فرم دوم چي؟ يعني بخوام با گذاشتن يك دكمه اي روش و كليك روي اون فرم دوم بسته بشه و صفحه جديد يا همون صفحه اول بسته بشه...؟
راستي من دوتا فرم ندارم فرم هاي زيادي دارم . يعني از فرم اول ممكن هست بخوام به چند تا فرم برم...
اين كد چجوري براش اجرا ميشه ميدونيد؟

mrshcom
شنبه 08 اسفند 1388, 11:58 صبح
مرسي.. من كد اجرا كردم . فرم اول بطور كامل ميبنده.. اما براي فرم دوم چي؟ يعني بخوام با گذاشتن يك دكمه اي روش و كليك روي اون فرم دوم بسته بشه و صفحه جديد يا همون صفحه اول بسته بشه...؟
راستي من دوتا فرم ندارم فرم هاي زيادي دارم . يعني از فرم اول ممكن هست بخوام به چند تا فرم برم...
اين كد چجوري براش اجرا ميشه ميدونيد؟

فرقي نميكنه 100 تا فرم باشه بعد از كدي كه فرم 2 مياد بالا هر چي كه ميخواي بياد بالا بنويس فرم1 يا ... اگه ميخواي 2 تا فرم پشت سر هم بيان بالا يه for بذار..

jigily
شنبه 08 اسفند 1388, 12:54 عصر
فرقي نميكنه 100 تا فرم باشه بعد از كدي كه فرم 2 مياد بالا هر چي كه ميخواي بياد بالا بنويس فرم1 يا ... اگه ميخواي 2 تا فرم پشت سر هم بيان بالا يه for بذار..
درست شد اما ببينيد وقتي روي فرم اول چند تا دكمه دارم چكار بايد بكنم؟ اين كاربر هست كه مشخص ميكنه كدوم فرم يمخواد و ديگه به اون ترتيب كاري نداره؟؟

jigily
سه شنبه 18 اسفند 1388, 08:27 صبح
كسي راهي ديگه نداره؟

behzad1986
سه شنبه 18 اسفند 1388, 09:55 صبح
سلام دوست عزيز
فايل Program.Cs تغييير بده به اين شكل


static class Program

{
public static Form1 F = new Form1();

[STAThread]

static void Main()
{

F.ShowDialog();
}
}
بعد درون دكمه روي Form1 اين كد بنويس

this.Close();
this.Dispose();
new Form2().ShowDialog();

jigily
سه شنبه 18 اسفند 1388, 10:51 صبح
سلام دوست عزيز
فايل Program.Cs تغييير بده به اين شكل



static class Program



{
public static Form1 F = new Form1();

[STAThread]

static void Main()
{

F.ShowDialog();
}
}
بعد درون دكمه روي Form1 اين كد بنويس

this.Close();
this.Dispose();
new Form2().ShowDialog();


من روي فرم اولم چند تا دكمه دارم و دكمه هام براي كليك شدن ترتيب ندارن بستگي به كاربر داره

behzad1986
سه شنبه 18 اسفند 1388, 11:07 صبح
خوب مهم نيست شما تو هر دكمه فرم مخصوص به خودشو باز كنين!

jigily
سه شنبه 18 اسفند 1388, 11:16 صبح
خوب مهم نيست شما تو هر دكمه فرم مخصوص به خودشو باز كنين!

درست شد واقعا ممنون...
فقط فونت هام و اينها يكم عوض شد؟

davidi
چهارشنبه 19 اسفند 1388, 18:50 عصر
سلام من یه تازه وارد هستم دوستان ولی به نظرم باید از کد زیر برای بستن یک فرم باز استفاده کرد.
this.Close();