PDA

View Full Version : بستن فرم از رویداد form_Loading



Mrs.Net
دوشنبه 29 مرداد 1386, 16:02 عصر
داخل رویداد form_loading میخوام بعد از چک کردن یک شرط
فرم بسته بشه و فرم دیگه باز بشه
از this.close استفاده کردم اما خطا میگیره که تاموقعی که داره کار میکنه نمیتونی کلوز کنی
چجوری اینکارو اتجام بدم؟!
ممنون

مهدی رحیم زاده
دوشنبه 29 مرداد 1386, 16:08 عصر
از Form_active استفاده کن

موفق باشید

Mrs.Net
دوشنبه 29 مرداد 1386, 16:33 عصر
نمیخوام فرم نمایش داده بشه

hdv212
دوشنبه 29 مرداد 1386, 16:46 عصر
فکر کنم در رویداد Shown مربوط به فرمت باید بنویسی.

PC2st
دوشنبه 29 مرداد 1386, 16:53 عصر
من وقتی که در رویداد Load از Form1 با متد this.Close فرم رو میبندم، فرم بسته میشه.
حتما یکسری عملیات در قسمت Form_Load نوشتید، که نمیشه همینجوری فرم رو بست.

Mrs.Net
دوشنبه 29 مرداد 1386, 17:09 عصر
حتما یکسری عملیات در قسمت Form_Load نوشتید، که نمیشه همینجوری فرم رو بست.این شرط اول فرمم هست و با else از همه کارها جدا شده ولی باز اشکال میگیره
چیکار کنم؟

PC2st
دوشنبه 29 مرداد 1386, 17:20 عصر
اگر کدهای مربوط به رویداد Load رو بگذارید راحت میشه تشخیص داد.
فقط قبلش یک پروژه جدید از نوع WIndows Application ایجاد کنید، در رویداد Load از فرم خالی، متد Close رو استفاده کنید، مطمئن بشید که خطا نمیده؟؟ تا بعد بشه روی کدهای رویداد Load تصمیمتون رو برای تشخیص ارور بگیرید.

hdv212
دوشنبه 29 مرداد 1386, 18:07 عصر
داخل رویداد form_loading میخوام بعد از چک کردن یک شرط
فرم بسته بشه و فرم دیگه باز بشه
از this.close استفاده کردم اما خطا میگیره که تاموقعی که داره کار میکنه نمیتونی کلوز کنی
چجوری اینکارو اتجام بدم؟!
اول اینکه فرمت فرم اصلی برنامه س یا نه (فرمی که در تابع main برنامه ت ازش یه نمونه ساخته شده به عنوان فرم اصلی برنامه س)، اگه فرم اصلی برنامه س، خب اگه بسته بشه از برنامه ات خارج میشه (میتونی از تابع Hide() استفاده کنی)
بعدشم من دو تا فرم به برنامم اضافه کردم و در برم اصلی برنامه، یه نمونه از فرم دوم ساختم و از طریق تابع ShowDialog() نمایشش دادم و در رویداد load فرم دومم، شرطی رو تست کردم که اگر شرط درست باشه، فرمم بسته بشه و فرم سوم باز بشه و انجام هم شد، اینم نمونه کدی که در رویداد فرم دومم نوشتم :

bool b = true;
if (b)
{
Form3 frm = new Form3();
frm.ShowDialog();
this.Close();
}

Mrs.Net
دوشنبه 29 مرداد 1386, 18:32 عصر
فرم اصلی نیست و تو یک برنامه MDI به عنوان چایلد باز میشه
بنظرم بخاطر رویداد form_closing هست؟
با یک فرم معمولی چک کردم و درست بست.

PC2st
دوشنبه 29 مرداد 1386, 20:27 عصر
اگر مجبور شدی و دیدی راه حلی به ذهنت نمیرسه، از try-catch استفاده کنید.
خطای صادر شده رو در فرم MdiParent نادیده بگیرید... البته اگر مجبور شدید چون کار استانداردی به نظر نمیرسه.

SalarSoft
سه شنبه 30 مرداد 1386, 07:44 صبح
باید تابع CreateHandle رو override کنید و کد مربوط به خودتون رو در اونجا بنویسید.
فقط ممکن است ایراد ObjectDisposed رو بده که از روش زیر باید استفاده کنی:




protected override void CreateHandle()
{
try
{
base.CreateHandle();
}
catch (ObjectDisposedException) { }

Close();
}

Mrs.Net
سه شنبه 30 مرداد 1386, 12:00 عصر
باید تابع CreateHandle رو override کنید و کد مربوط به خودتون رو در اونجا بنویسید.
فقط ممکن است ایراد ObjectDisposed رو بده که از روش زیر باید استفاده کنی:

اینم تقریبا مثل همون try گذاشتن برای close هست. درست میگم؟

jamesband007
یک شنبه 18 اسفند 1387, 20:21 عصر
می تونید از متد dispose استفاده کنید

Form.ActiveForm.Dispose();

this.Dispose();

this.Dispose(false);
که آخری برای این است که فقط این فرم بسته شود

ariyanna
یک شنبه 18 اسفند 1387, 21:21 عصر
اگه فورمت child هستش
اول مطمئن شو که همه ی رخداد هات کامل انجام شده و به اتمام رسیده...(اگه برنامت پیچیدست می تونی از break point استفاده کنی برای تشخیص ایم مطلب)
دوم اینکه بیا تو فورم اصلیت و فورم child دتو اونجا new کن ، کلا اگهاین کارو بکنی و از فورم main به فورم child دستور بدی بهتره ودرستش هم همین هست اما کمی پیچیده می شه.
بههر حال از اینجا می تونی فورمتو ببندی ... اگه مشکلی هست حتما اشکال جای دیگست راه های دوستان هم همه درستهو اگه نمی شه ... اشکال رو جای دیگه جست و جو کنین. اگه کد رو بذارید جواب مشخص می شه .
موفق باشید

Form1 frm = new Form1();
.
.
.
.
.
frm.Close();