برگزیده های پرشین تولز

مشکل با باز شدن فرم (هر چند بار کلیک کنم بازم فرم مشابه باز میشه حتی صد تا فرم)

sinazn

Registered User
تاریخ عضویت
29 ژانویه 2005
نوشته‌ها
105
لایک‌ها
2
سن
44
محل سکونت
bandar abbas
سلام به اساتید سی شارپ

من یه برنامه دارم که با کلیک بر روی یک کلید در فرم 1 یک فرم باز میشه بنام فرم2 طبق کتاب آموزش سی شارپ به شرح زیر :
button1 در form1 قرار دارد کد زیر در رویداد کلیک button1 نوشته شده

private void button1_click(object sender,EventArgs e)
در رویداد بالا کد زیر رو نوشتم

Form objform=new form2
objform.show

حال وقتی روی button1 کلیک میشه form 2 باز میشه ولی اگه بازم روی button1 کلیک کنیم باز هم یک فرم دیگه باز میشه یعنی صد بار هم که کلیک کنیم صد تا فرم مشابه form2 باز میشه چکار کنم که فقط یک فرم باز بشه اشتباه کد کجاست?
با تشکر
 

m.rezakh

Registered User
تاریخ عضویت
2 سپتامبر 2014
نوشته‌ها
256
لایک‌ها
257
محل سکونت
شیراز
سلام به اساتید سی شارپ

من یه برنامه دارم که با کلیک بر روی یک کلید در فرم 1 یک فرم باز میشه بنام فرم2 طبق کتاب آموزش سی شارپ به شرح زیر :
button1 در form1 قرار دارد کد زیر در رویداد کلیک button1 نوشته شده

private void button1_click(object sender,EventArgs e)
در رویداد بالا کد زیر رو نوشتم

Form objform=new form2
objform.show

حال وقتی روی button1 کلیک میشه form 2 باز میشه ولی اگه بازم روی button1 کلیک کنیم باز هم یک فرم دیگه باز میشه یعنی صد بار هم که کلیک کنیم صد تا فرم مشابه form2 باز میشه چکار کنم که فقط یک فرم باز بشه اشتباه کد کجاست?
با تشکر
سلام
دوست عزیز در واقع شما با هر بار کلیک کردن روی دکمه ، یک نمونه از فرم ایجاد میکنید و نمایش میدید
1 روش برای جلوگیری از این مشکل استفاده از کد زیر است :
کد:
Form objform=new Fom();
objform.ShowDialog();
موفق باشید
 

چه_1983

کاربر تازه وارد
تاریخ عضویت
22 ژانویه 2015
نوشته‌ها
3
لایک‌ها
1
سن
40
شما با این کار تو یه کرم یا حلقه گیر کردید
این کد رو هم امتحان کنید
فرضا برای رفتن به فورم 3 با زدن باتتن
یک شی بسازید از فورم و اون رو نمایش بدید و در رویدادها برای اینکار کد ننویسید
;() Form3 ob = new Form3
;() ob.ShowDialog
 

yasharmahdi

Registered User
تاریخ عضویت
8 جولای 2014
نوشته‌ها
295
لایک‌ها
56
همانطور که دوستان گفتن باید توسط ShowDialog باز بشه . شو دیالوگ به این معنی هستش که فرمی که باز میشه رو جلوتر از فرم اولی تو الویت قرار میده.یعنی باید کارت با این فرم جدید تموم بشه و فرم رو ببندی تا بتونی باز با فرم اولیه کار کنی.درهرحال این بهترین راه هستش.راه دیگه ای هم هستش که بیاید فرم اولیه رو هاید کنید بعد فرم جدید رو شودیالوگ کنید.
کد:
this.Hide();
Form2 frm2=new Form2();
frm2.ShowDialog();
هر دو راه جواب میده.
موفق باشید.
باتشکر
 

Ehsannozari

کاربر تازه وارد
تاریخ عضویت
14 ژانویه 2017
نوشته‌ها
1
لایک‌ها
0
سن
33
از این کد استفاده کنید

if (Application.OpenForms["Form1"] == null)
new Form1().Show(Owner == null ? this : null);
برای پیدا کردن راه حل برای مشکلتون با این شماره تماس بگیرید یا به همین شماره در تلگرام پیام بدید.
 
بالا