PDA

View Full Version : سوال: ارسال بچه فرم روی همه فرم ها(BringToFront)



mjsqts
دوشنبه 03 آذر 1393, 18:44 عصر
سلام
ببینید این کد من چه ایرادی داره؟
این کد اگر بچه فرم باز باشه دوباره اون رو باز نمیکنه بلکه باید همون بچه فرمی که بازه بیاد روی همه فرم ها اما روی فرم ها نمیاد
باید چیکارش کنم؟



private void مدیریتکاربرانToolStripMenuItem_Click( object sender, EventArgs e)
{
Form12 frm12 = new Form12();
try
{
if (!IsMDIChildFormOpen("Form12"))
{

frm12.MdiParent = this;
frm12.Show();
}
else
{
frm12.BringToFront();

}
}
catch (Exception ex)
{

}
}
private bool IsMDIChildFormOpen(string formName)
{
try
{
foreach (Form childForm in this.MdiChildren)
{
if (childForm.Name == formName)
{
if (childForm == null || childForm.IsDisposed)
return false;
else
return true;
}
}
}
catch (Exception ex)
{
throw ex;
}
return false;
}

Mahmoud.Afrad
چهارشنبه 05 آذر 1393, 17:46 عصر
سوال تکراریه. فقط یک نکته داره اون هم اینه که چطور کد رو بصورت یک متد بنویسیم تا برای ایجاد هر فرم فرزندی ازش استفاده کنیم. (البته از الگوی سینگلتون هم میتونید استفاده کنید)

private void CreateForm(Type type)
{
bool isAlive = false;
foreach (var frm in this.MdiChildren)
{
if (frm.GetType() == type)
{
isAlive = true;
frm.WindowState = FormWindowState.Normal;
frm.BringToFront();
break;
}
}

if (!isAlive)
{
Form frm = (Form) System.Activator.CreateInstance(type);
frm.MdiParent = this;
frm.Show();
}
}

نحوه استفاده

CreateForm(typeof (Form12));