PDA

View Full Version : سوال: خروج از حالت دیباگ با انتخاب دکمه خروج برنامه



neda_dela
جمعه 20 شهریور 1388, 15:24 عصر
من توی فرم اول برنامم یه منو دارم که با انتخاب هر کدوم از گزینه های اون منو فرم اول بسته میشه و فرم دوم باز میشه و هنگام خروج از فرم 2 دوباره فرم 1 ظاهر میشه. حالا نمی دونم چرا وقتی دکمه خروج رو از فرم 1 کلیک می کنم فرم بسته میشه اما close debuging نمیشه یعنی خودم دستی باید دکمه close debuging رو کلیک کنم.(stop کردن برنامه از حالت اجرا)
قبل از اینکه این امکان رو تو برنامم بذارم یعنی همین که با ورود به فرم 2 فرم 1 هاید بشه این طوری نبود حالا که این امکان رو گذاشتم این طوری شده (چه سوالی شد خنده دار:قهقهه:)

این کد زمانیه که روی یکی از منو ها کلیک میشه تا فرم 2 باز بشه




Form chpss = new chngpass();
chpss.Show();
this.Hide();

این هم کد زمانیه که از فرم 2 خارج می شم و می خوام فرم 1 نمایش داده بشه


Close();
index ind = new index();
ind.menuStrip1.Enabled = true;
ind.Show();

index فرم 1 هست
کد مربوط به دکمه خروج فرم 1 هم که همه مشکل من اونه فقط یه close ساده است.

***راستی یه سوال دیگه فرق اینکه متغیر از نوع یه فرم رو به دو شکل زیر تعریف می کنم چیه ؟

Form chpss = new chngpass();

index ind = new index();

M.YasPro
شنبه 21 شهریور 1388, 06:46 صبح
سلام
توی کلاس program کدوم فرم run میشه ؟

Reza_Yarahmadi
شنبه 21 شهریور 1388, 12:37 عصر
مشکل شما به این دلیله که در زمان برگشت از فرم 2 یه شی جدید از فرم 1 درست میکنید و اونو Show میکنید. زمانی هم که دکمه خروج این فرم رو میزنید این شی جدید بسته میشه ولی برنامه چون هنوز یه فرم باز داره (فرمی که Hide کردید) بسته نمیشه.
برای حلش یا باید توی رویداد FormClosing فرم اول دستور زیر رو بنویسید
Application.Exit();
و یا با دستوری مثل دستور زیر فرمی که Hide کردید نمایش بدید.
Form f1 = Application.OpenForms["Index"];

در مورد سؤال دوم ، توی مثال شما فرقی نمیکنه اما برای حالاتهایی مثل کد بالا نیازه که متغیر از نوع فرم باشه.

neda_dela
شنبه 21 شهریور 1388, 13:14 عصر
سلام
توی کلاس program کدوم فرم run میشه ؟
فرم 1 یعنی index

M.YasPro
شنبه 21 شهریور 1388, 13:36 عصر
این هم کد زمانیه که از فرم 2 خارج می شم و می خوام فرم 1 نمایش داده بشه


Close();
index ind = newindex();
ind.menuStrip1.Enabled = true;
ind.Show();

به جای کد بالا اینو بنویسید ببینید درست میشه


Close();
Application.OpenForms["index"].Show();