我用C#。NET写C/S结构的问题(MDI),因我刚开始学,所以请知道多多指教!
这里不讨论用.net做c/s合不合理的问题,就事论事!
我的目的:程序启动后先启动MDI主窗体,但是这时候用是肯定是什么都做不了,点击菜单栏的登录即弹出登录窗体,问题出在弹出登录窗体时如何验证当前登录窗体是否已经存在,如果存在就显示在最前面(MDI如果是活动状态,自然在最前),在c++builder和delphi下很容易,在这里就是麻烦,结构变了感觉晕了!
请大家指点。
if(窗体已存在)
{
  激活此窗体;
}
else
{
 Login login=new Login();
 login.show();
}
多谢!!!!!

解决方案 »

  1.   

    你用login.showdialog();
    就不用这么麻烦了
      

  2.   

    调转来做就行了
    Main()放在Login()里面。
      

  3.   

    兩個方法
    方法一:先出登錄窗體體,再出主窗體
    [STAThread]
    static void Main() 
    {
    Login login = new Login( );
    login.ShowDialog();
    if ( login.DialogResult == DialogResult.OK )
       Application.Run( new mainInterface() );
    }
      

  4.   

    方法二:
    用arraylist保存窗體,如下:
    開始時 Arraylist arraylist = new ArrayList();
    foreach( form f in arraylist)
    {
       if( f.GetType().Equals( System.Type.GetType( "namespace.login" )))
            ((login)f).Activate();
    }
    else
    {
     Login login=new Login();
     login.show();
     arraylist.add( login );
    }
    最後在login的closing 中寫入
    namespace.arraylist.remove(this)
      

  5.   

    你这个可以实现呀, 真不好意思没看清楚。 我是做过BS结构的。  在BS结构式中web.config通过对文件夹设置 权限
      

  6.   

    我是用vb.net也遇到过同样的问题
    我发我的代码你参考一下
    应该差不多
    不过Vb.net是可以直接用全局变量的
    dim sFrmParent as Form  '--全局变量
    dim CheckForm ,OpenForm as Form
    先在父窗体load中
    sFrmParent=me   '----
    '--下面是代码:
    For Each CheckForm In sFrmParent.MdiChildren
                If TypeOf CheckForm Is FrmLogin Then
                    CheckForm.Activate()
                    Exit Sub
                End If
            Next
            OpenForm=New FrmLogin 
            OpenForm.MdiParent = sFrmParent
            frOpenForm.Show()
      

  7.   

    楼上的,你的VB。NET的代码是实现先主窗体再出现登录窗体的吗?你的主窗体显示代码呢?因为我不会VB,我不知你的If TypeOf CheckForm Is FrmLogin 是不是指登录窗体的当前状态?请指明,谢谢
      

  8.   

    showdialog()模式窗口,直接就在最上面,后面的窗口不能操作