我原来用的方法是
两个窗体.一个login.cs
一个form1.cs
在main方法中先  Application.Run(new login());在login.cs的登陆成功后用
 Form1 fem1 = new Form1(comboBox1.Text);
 fem1.ShowDialog();
调出主窗体
但是这样之后就会有两个窗体同时存在.
如何关闭原来的login窗体.而不影像fem1窗体?
我尝试用Close()方法.这样整个程序就退出了
我尝试用hide()方法.但是似乎没有效果.依然是两个窗体同时显示
我尝试用visible属性设置成false但是效果同上..求教..谢谢..

解决方案 »

  1.   

    启动对象写在main 函数里面,然后在那里声明窗体变量
      

  2.   

    这还不简单,在主页页面的main函数那里填写
    Form1 fem1 = new Form1(comboBox1.Text);
     fem1.ShowDialog();
    之后转到login画面,然后在登陆button里面加上一句this.Close();
    就行啦
      

  3.   

    Form1 fem1 = new Form1(comboBox1.Text);
    this.Hide();
    fem1.ShowDialog();
      

  4.   

    如果我没猜错,你用Hide()方法的时候代码应该是这样的吧?
    Form1 fem1 = new Form1(comboBox1.Text);
    fem1.ShowDialog();
    this.Hide();
    这是典型的语句执行顺序问题。因为ShowDialog()方法是阻塞式的,即是说在你用ShowDialog()方法Show出来的窗体没关闭之前this.Hide()是不会执行的。还有如果你用这个方法,默认情况下Show出来的窗体关闭后程序是还没有结束的,因为登陆窗体依然在运行,只是你把它隐藏了,看不到而已,不信可以打开进程管理器查看一下,解决方法是在Show出来的窗体的closing事件中写Application.Exit();
      

  5.   

    private void button1_Click(object sender, System.EventArgs e)

    int State;
    try
    {
    if((textBox1.Text=="")||(textBox2.Text==""))
    {
    MessageBox.Show("用户名或密码未填写,请填写完整");
    return;
    }
    else
    {
        State=Opration.ValidationPWD(textBox1.Text,textBox2.Text);
    if(State==3)
    {
    this.LoginState="[系统管理员]";
    Login();
    }
    else if(State==2)
    {
    this.LoginState="[高级用户]";
    Login();
    }
    else if(State==1)
    {
    this.LoginState="[一般用户]";
        Login();
    }
    else
    MessageBox.Show("用户名或密码错误,请核对后重新输入!");
                        

    }
    }
    catch(Exception ex)
    {
      throw ex;
    }
    finally
    {}
    }
    public void Login()
    {
    timer1.Interval=25;
    timer1.Enabled=true;
    timer1.Elapsed+=new System.Timers.ElapsedEventHandler(Eshow);

    timer2.Interval=500;
    timer2.Tick+=new EventHandler(this.timer2_Tick);
    timer2.Enabled=true;
    } public void timer2_Tick(object Source,System.EventArgs e)
    {
    SMain main=new SMain(textBox1.Text,this.LoginState);
    main.Show();
    timer2.Enabled=false;
    }
    public void Eshow(object sender,System.Timers.ElapsedEventArgs e)
    {
    if(this.Opacity!=0)
    this.Opacity-=0.05;
    else
    {
       this.Hide();
       timer1.Enabled=false;
    }

    }
    public int ValidationPWD(string UID,string PWD)
    {
    string Tag;
    string State;
    Tag=this.returnString("Select Count(LoginName) From Login Where LoginName='"+UID+"'");
    if(Tag=="0")
    return 0;
    else
    {
    if(PWD!=this.returnString("Select PSWD From Login Where LoginName='"+UID+"'"))
    return 0;
    else
    {
    State=this.returnString("Select State From Login Where LoginName='"+UID+"' And PSWD='"+PWD+"'");
    return System.Convert.ToInt32(State);
    }
    }
    }这个是我写的一个程序.关键的几个函数给你列出来了.
    希望能对你有写帮助.
      

  6.   

    dino815613(浪客),你的方法会吧整个程序退出.我试过.
    LixingTie(生铁) ,非常感谢你的解答..不但让我解决了问题.而且让我学到了东西.非常感谢.
    Azure_ceil(天蓝) ,谢谢你的代码.虽然现在还没用到.说不定以后能用到.谢谢.