PDA

View Full Version : سوال: مشکل در نمایش فرم



raha_20
یک شنبه 25 مرداد 1388, 15:25 عصر
سلام
من یه دکمه دارم که وقتی روی ان کلیک میکنم فرم 2 نمایش داده میشه واسه نمایش فرم هم که یه متغیر ازنوع فرم2 ایجاد و شو میکنم . خوب حالا من هرچقدر روی این دکمه کلیک کنم یه نمونه از فرم 2 باز میشه . من میخوام اگه فرم 2 باز هست دیگه اجازه باز شدن را نده . باید چی کارکنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/

hozouri
یک شنبه 25 مرداد 1388, 15:33 عصر
یه فیلد(منطقی) static برای فرم 2 تعریف کن و موقع نمایش اگر اون فیلد False بود : اول فیلد رو True کن و سپس فرم رو نمایش بده
و موقعی هم که فرم 2 بسته شد دوباره فیلد رو False کن ...

debugger
یک شنبه 25 مرداد 1388, 15:49 عصر
وقتي ميخواي فرم 2 را باز كني اونو showdialog كن تا كاربر به فرم 1 دسترسي نداشته باشه تا هي روي دكمه كليك كنه و فرم باز كنه

raha_20
یک شنبه 25 مرداد 1388, 16:02 عصر
نه چون از خاصیت mdi استفاده کردم نمیتونم show dialog کنم . فکر کنم بهتر باشه از متغیر منطقی استفاده کنم

Reza_Yarahmadi
یک شنبه 25 مرداد 1388, 16:41 عصر
چند روش واسه این کار هست
یکی توسط Generic Singleton


public class SingletonProvider<T> where T : new()
{
SingletonProvider() { }

public static T Instance
{
get
{
return SingletonCreator.Instance;
}
}

class SingletonCreator
{
static SingletonCreator(){}
private static T instance;
public static T Instance
{
get
{
System.Windows.Forms.Form frm = instance as System.Windows.Forms.Form;
if (instance == null || frm.IsDisposed==true)
instance = new T();
return instance;
}
}
}
}
طرز استفاده اش هم بصورت :

Form2 f2 = SingletonProvider<Form2>.Instance;
f2.Show();
یه روش دیگه استفاده از Application :

Form f2;
if (Application.OpenForms["Form2"] != null)
f2 = Application.OpenForms["Form2"];
else
f2 = new Form2();
f2.Show();
بازم هست ولی فکر کنم همینا کارتو راه بندازه!! :چشمک:

Atena_k
دوشنبه 26 مرداد 1388, 20:15 عصر
یه فیلد(منطقی) static برای فرم 2 تعریف کن و موقع نمایش اگر اون فیلد False بود : اول فیلد رو True کن و سپس فرم رو نمایش بده
و موقعی هم که فرم 2 بسته شد دوباره فیلد رو False کن ...
روش کاملا غلطی است!
روش صحیح استفاده از الگوی سینگلتون می باشد.