private void btnOK_Click(object sender, System.EventArgs e)
{

    Form MainForm=new MainForm(this.txtUser.Text,"system");
             MainForm.ShowDialog();
    this.Close();
          }此函数的作用是: 用户登录界面的,当用户输入用户名,密码后进入主Form, 同时关闭登录的Form, 可是我这里this.Close();却关闭不了,为什么不能关闭?我用VS.net(C#) 开发.

解决方案 »

  1.   

    MainForm.ShowDialog();
    会把当前函数阻塞,你的this.Close();就执行不了。你如果关了你的MainForm,这个登录界面马上就可以关了。对不对?
    你最好改成:
                 Form MainForm=new MainForm(this.txtUser.Text,"system");
                 this.Hide();
                 MainForm.ShowDialog();
        
      

  2.   

    同意樓上,ShowDialog()后必須要等form關閉后才會繼續執行后面的代碼.
    所以要么用hide隱藏登录窗體,要么將ShowDialog()改為Show();
      

  3.   

    同意一楼,你的MainForm.ShowDialog();为模态显示窗体,所以后面的语句this.Close();就阻塞了,当你MainForm窗体关闭后,才会执行this.Close()语句。而且如果你的第一个启动的窗体关闭的话,整个应用程序也就结束了。要注意,最好是更改启动窗体,或者按照1楼的方法,调用this.Hide();
      

  4.   

    改成这样就可以了!
    private void btnOK_Click(object sender, System.EventArgs e)
    {

        Form MainForm=new MainForm(this.txtUser.Text,"system");
                 MainForm.Show();
        this.Close();
              }
      

  5.   

    //frmLogin.cs:
    frmMain m = new frmMain();
    m.Show();
    this.Close() ;
      

  6.   

    你的登陆界面应该是主界面(程序启动时的窗体)吧,那不能用 close的吧  要不会把程序都退出了,应该用hide的吧。
                      this.Hide();
    MainForm frm=new MainForm();
    frm.ShowDialog();
    frm.Dispose();
    用这里试下,应该没错,我的是这样的
      

  7.   

    写一个MAIN
    public class MainClass
    {
    public static Form myform=null;
    public MainClass()
    {
    //
    // TODO: ヤレエヒエヲフ晴モケケヤ・ッハツ゚シュ
    //
    }
    /// <summary>
    /// &#65427;&#65382;&#65427;&#65411;&#65395;&#65420;&#65424;&#65412;&#65430;&#12539;&#65434;&#65397;
    /// </summary>
    [STAThread]
    static void Main() 


    Application.Run(new login ());
    if (myform!=null)
    {
    Application.Run(myform); }
    }
    }
    在loinform 里:
    MainClass.myform =new mainForm ();
    this.Close ();