PDA

View Full Version : باز نمودن تنها بک نمونه از یک فرم



mehdi4467
پنج شنبه 20 آذر 1393, 00:18 صبح
سلام
من یک برنامه MDI ایجاد کرده ام و در فرم اصلی که نامش Fmain است و در آن یک menuStrip قرار داده و یک منویی به نام loggers دارم.
حال وقتی روی loggers کلیک می کنم یک فرمی به نام Floggers به این شکل باز می شود:

private void loggersToolStripMenuItem_Click(object sender, EventArgs e)
{
loggersToolStripMenuItem.Enabled = false;
Flogger my_Flogger = new Flogger();
my_Flogger.MdiParent = this;
my_Flogger.Show();
}

بنا براین وقتی روی loggers کلیک می کنم گزینه loggers غیر فعال شده و فرم Flogger باز می شود.
حال در رویداد Close فرم Flogger کد زیر را نوشته ام:

private void Flogger_FormClosing(object sender, FormClosingEventArgs e)
{
Fmain my_Fmain = new Fmain();
my_Fmain.loggersToolStripMenuItem.Enabled = true;
}

قاعدتا با کد بالا هنگام بسته شدن فرم Flogger باید گزینه Loggers در منو فعال شود ولی فعال نمی شود.
لطفا راهنمایی نمایید.

nasr
پنج شنبه 20 آذر 1393, 07:32 صبح
سلام
این کد را می تونید استفاده کنید
public class Opne1Form<T> where T : new()
{
public static T Instance
{
get
{
return SingletonCreator.Instance;
}
}
class SingletonCreator
{
private static T objInstance;
public static T Instance
{
get
{
Form objForm = objInstance as Form;
if (objInstance == null || objForm.IsDisposed == true)
objInstance = new T();
return objInstance;
}
}
}
}


روش استفاده

FrmRawMaterial objForm = Opne1Form<FrmRawMaterial>.Instance;
objForm.MdiParent = this;
objForm.Show();

حسین.کاظمی
پنج شنبه 20 آذر 1393, 07:53 صبح
سلام
میتونی یک متغییر از نوع boolen تعریف کنی که وقتی کلیک میشه و فرم باز میشه مثلامقدار متغییر false بشه بعد تو رویداد کلیک تعریف کن اگر false باز نکه اگر true باز کنه راستی مقدرا اولیه هم true کن تا مشکلی نداشته باشه
موفق باشی

mehdi4467
پنج شنبه 20 آذر 1393, 08:53 صبح
ممنون
این کد کار کرد ولی چرا کدی که منو نوشتم کار نمی کند؟
البت ایم کد کامل نیاز من رو برآورده نمی کنه. اینکه وقتی فرم باز می شود منوی مربوطه غیر فعال شده و با بستن فرم منو دوباره فعال شود.