判断窗体类是否已经被实例化

lunyx 2009-05-20 09:24:44
有个窗体类,CForm1,怎么判断他已经被实例化了?也就是是否已经存在该类的对象,如果有的话,就把他显示出来,不用再重复建立了。谢谢,不要通过窗体的名称来判断,要通过类CForm1 来判断。
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wartim 2009-05-20
  • 打赏
  • 举报
回复
一开始赋成null,new过了就不是null
xutao888 2009-05-20
  • 打赏
  • 举报
回复
用单例模式
冷月孤峰 2009-05-20
  • 打赏
  • 举报
回复

#region 不重复打开MDI子窗体
/// <summary>
/// 不重复打开MDI子窗体
/// 调用:this.OpenMDIWindow(typeof(窗体名).ToString());
/// </summary>
/// <param name="ChildTypeString">窗体名称(typeof(FormName).ToString())</param>
private void OpenMDIWindow(string ChildTypeString)
{
Form myChild = null;
if (!ContainMDIChild(ChildTypeString))
{
// Get current process assembly
Assembly assembly = Assembly.GetExecutingAssembly();
// Create data type using type string
Type typForm = assembly.GetType(ChildTypeString);
// Create object using type's "InvokeMember" method
Object obj = typForm.InvokeMember(
null,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance,
null,
null,
null);
// Show child form
if (obj != null)
{
this.Refresh();
//Form frmTip = LoadTip.ShowTipForm(this, "正在加载窗体...");

myChild = obj as Form;
myChild.MdiParent = this;
myChild.WindowState = FormWindowState.Maximized;
myChild.Show();
myChild.Focus();

//frmTip.Close();

}
}
}

/// <summary>
/// Search mdi child form by specific type string
/// </summary>
/// <param name="ChildTypeString"></param>
/// <returns></returns>
private bool ContainMDIChild(string ChildTypeString)
{
Form myMDIChild = null;
foreach (Form f in this.MdiChildren)
{
if (f.GetType().ToString() == ChildTypeString)
{
// found it
myMDIChild = f;
break;
}
}
// Show the exist form
if (myMDIChild != null)
{
myMDIChild.TopMost = true;
myMDIChild.Show();
myMDIChild.Focus();
return true;
}
else
{
return false;
}
}
#endregion
zgke 2009-05-20
  • 打赏
  • 举报
回复
建立全局静态变量保存 CForm1 的实例

public static CForm1 m_CForm1;



判断的时候 直接 if(xxx.m_CForm1!=null)就可以了.
gsyst520 2009-05-20
  • 打赏
  • 举报
回复

public static CForm1 cform1;

if (cform1== null || cform1.IsDisposed)
{
cform1= new CForm1();
}
cform1.MdiParent = this;
cform1.StartPosition = FormStartPosition.CenterScreen;
cform1.Show();
cform1.Activate();


111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧