做了一个窗体控件
里面有MDI
点下拉菜单有修改密码,重新登录等按钮,
现在的问题是我点开修改密码会显示修改密码窗体,但是再点又会再次弹出,请教下各位高手,怎样让它已经打开的窗体不再重新打开了啊?
希望有代码,谢谢啦另求登录窗体从数据库users的name字段和password字段验证用户名和密码的效率代码~

解决方案 »

  1.   

    dim dlg as new dlgLogin
    dlg.showdialog
      

  2.   

    ???????????
    看不懂也不能dlg.showdialog因为我用的MDI父子窗体,只能show
      

  3.   

    MDI不是有父子关系么,设置一下,然后再你的主窗口去判断MDIChildren是否包含你的用户名密码窗体有就把子窗体提到最前,没有就New一个子窗体咯Over
      

  4.   

    把把有的窗体放到一个集合中。当新建窗体时先去比对集合里有没有这个窗体,如果没有就SHOW出来,然后加入集合,有的话直接把集合中的SHOW出来。
      

  5.   

    通常更改口令这类的窗口是用有模式的窗口,如果用无模式的窗口,可以用:   If Not mfrm Is Nothing AndAlso mfrm.Visible Then
                mfrm .Activate()
            Else
                mfrm = New frmLogin
                mfrm.MdiParent = Me
                mfrm.Show()
            End If
      

  6.   

     private bool CheckActive(string frmName)//检查子窗体是否已经打开,若打开,则激活该窗体,否则打开新子窗体。参数为该窗体名称。
            {
                Form[] frmgroup = this.MdiChildren;
                
                foreach (Form frm in frmgroup)
                {
                    if (frm.Name == frmName)
                    {
                        frm.Activate();
                        return true;
                    }
                }
                return false;
            }
      

  7.   

    支持8楼的!
    不想用循环的话,这个方法看行不行!
    System.Reflection.FieldInfo fieldInfo = this.GetType().GetField(FormName);if (fieldInfo != null)
    {
        System.Windows.Forms.Form = 
                     curForm = (System.Windows.Forms.Form)fieldInfo.GetValue(this);
        if (curForm != null)
         {
            curForm.Activate(); 
        }
    }
    else
    {
        childForm.show();
    }
      

  8.   

    public static bool SearchForm(string formName)
    {
        for (int i = 0; i < Application.OpenForms.Count; i++)
        {
            if (Application.OpenForms[i].Name == formName)
            {
                Application.OpenForms[i].TopMost = true;
                Application.OpenForms[i].TopMost = false;
                return false;
            }
        }
        return true;
    }
    检查当前应用程序的所有窗体的