C#怎样禁止窗体重复显示
主窗体名叫MainForm子窗体叫RegisterUserForm每按一下出现一个!怎样禁止RegisterUserForm窗体重复显示?要代码!谢谢!我要代码!我要代码...
主窗体名叫MainForm 子窗体叫RegisterUserForm
每按一下出现一个!
怎样禁止RegisterUserForm窗体重复显示?
要代码!谢谢!
我要代码!我要代码!我要代码!我要代码! 展开
每按一下出现一个!
怎样禁止RegisterUserForm窗体重复显示?
要代码!谢谢!
我要代码!我要代码!我要代码!我要代码! 展开
4个回答
展开全部
class MenuOper
{
/// <summary>
/// 根据控件Tag显示对应窗体
/// </summary>
/// <param name="control"></param>
/// <param name="form"></param>
public void ShowForm(ToolStripMenuItem control, Form form)
{
switch (control.Tag.ToString())
{
case "9A":
OpenWindow(typeof(ChangePassword).ToString(), form);
break;
default:
break;
}
}
/// <summary>
/// 打开子窗体
/// </summary>
/// <param name="ChildTypeString"></param>
/// <param name="mainform"></param>
private void OpenWindow(string ChildTypeString, Form mainform)
{
Form myChild = null;
if (!ContainMDIChild(ChildTypeString, mainform))
{
// 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)
{
myChild = obj as Form;
myChild.MdiParent = mainform;
myChild.Show();
myChild.Focus();
}
}
}
/// <summary>
/// 查找子窗体并激活
/// </summary>
/// <param name="ChildTypeString"></param>
/// <param name="mainform"></param>
/// <returns></returns>
private bool ContainMDIChild(string ChildTypeString, Form mainform)
{
Form myMDIChild = null;
foreach (Form f in mainform.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;
}
}
}
{
/// <summary>
/// 根据控件Tag显示对应窗体
/// </summary>
/// <param name="control"></param>
/// <param name="form"></param>
public void ShowForm(ToolStripMenuItem control, Form form)
{
switch (control.Tag.ToString())
{
case "9A":
OpenWindow(typeof(ChangePassword).ToString(), form);
break;
default:
break;
}
}
/// <summary>
/// 打开子窗体
/// </summary>
/// <param name="ChildTypeString"></param>
/// <param name="mainform"></param>
private void OpenWindow(string ChildTypeString, Form mainform)
{
Form myChild = null;
if (!ContainMDIChild(ChildTypeString, mainform))
{
// 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)
{
myChild = obj as Form;
myChild.MdiParent = mainform;
myChild.Show();
myChild.Focus();
}
}
}
/// <summary>
/// 查找子窗体并激活
/// </summary>
/// <param name="ChildTypeString"></param>
/// <param name="mainform"></param>
/// <returns></returns>
private bool ContainMDIChild(string ChildTypeString, Form mainform)
{
Form myMDIChild = null;
foreach (Form f in mainform.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;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用单例模式 就是在子窗体类中 将子窗体的构造函数访问权限设为private
然后写一个方法 static型的 这个方法里调用构造函数 设一个标志 当打开一个子窗体的时候 判断是否已经打开一个 如果是 则不调用构造函数 如果没有打开或者已经关闭了 则调用构造函数实例化一个 你那个按钮的处理函数就是调用这个静态方法
如果还不懂 百度“单例模式”看看
然后写一个方法 static型的 这个方法里调用构造函数 设一个标志 当打开一个子窗体的时候 判断是否已经打开一个 如果是 则不调用构造函数 如果没有打开或者已经关闭了 则调用构造函数实例化一个 你那个按钮的处理函数就是调用这个静态方法
如果还不懂 百度“单例模式”看看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private RegisterUserForm _childWindow;
//按钮的点击事件
if(_childWindow==null)
{
_childWindow=new RegisterUserForm();//只会实例化一个
}
_childWindow.Show();
//按钮的点击事件
if(_childWindow==null)
{
_childWindow=new RegisterUserForm();//只会实例化一个
}
_childWindow.Show();
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询