两个窗体,MainForm:登入后的主窗体LoginForm:登入窗体
MainForm mainForm = new MainForm();
mainForm.Show();
this.Hide();
MessageBox.Show(“”);我测试了大概10台电脑 每台电脑有时候LoginForm会隐藏,有时候不会,关键的是我加的messagebox跳出来了,
但是this.Hide();没执行!?? 所有电脑隐藏都是时有时没有,只有我开发的这台电脑从来没有问题。
但是所有电脑运行环境都一样啊,都是FW4.0,谁能帮帮我?头要炸了

解决方案 »

  1.   

    换一下执行顺序
    MainForm mainForm = new MainForm();
    this.Hide();
    mainForm.Show();
    MessageBox.Show(“”);
      

  2.   

    没用 我试过了 this.Hide();执行之后 下面的就不会执行了 你自己试过没?
      

  3.   


    // 貌似这段代码是在 LoginForm 的 Load 事件里面的,是吗?
    // 如果是的话,为什么不在 Program.cs 文件里面写如下代码?
    using (LoginForm login = new LoginForm())
    {
        if (login.ShowDialog() == DialogResult.OK)
        {
            // 保存登录用户等相关信息,有待 MainForm 使用
        }
        else
        {
            Application.Exit();
        }
    }MainForm main = new MainForm();
    // 设置用户等必要属性
    main.User = loginUser;
    // and others ......Application.Run(main);
      

  4.   

    我认为六楼的方法是对的,每个WinForm程序都有个Program.cs文件,你在那里面试试修改代码控制窗体
      

  5.   


    是这个意思:我登入窗体上有“登入按钮” 是在按钮的单击事件中 
      private void btnLogin_Click(object sender, EventArgs e)
            {
                //if(如果用户名密码正确)
                 {
                  MainForm mainForm = new MainForm();
                mainForm.Show();
                this.Hide();
                MessageBox.Show(“”);
                  }
            }我只想知道为什么messagebox都跳出来了 为什么this.Hide();没执行
      

  6.   

    this.mainForm.Owner=this.LoginForm.
    试试这样是不是你想要的结果。
      

  7.   

    问题解决了 
    MainForm mainForm = new MainForm();
      mainForm.Show();
      this.Hide();
    this.ShowInTaskbar = false;不知道为什么会隐藏任务栏 窗体就会消失,但是结果却是正确的 ,很郁闷
      

  8.   

    在实例化 Window 类时,默认情况下子窗口不可见。 Show 显示一个窗口并立即返回,而不等待该窗口关闭。
    当 Window 类实例化时,默认情况下是不可见的。 ShowDialog 显示窗口,禁用应用程序中的所有其他窗口,并且仅在窗口关闭后才返回。 这种类型的窗口称为“模式”窗口。
      

  9.   


    // 在 LoginForm 登录按钮里面创建并弹出一个主窗体,这个实现本身是不可取的。
    // 单从逻辑上来说,LoginForm 本身就应该从属于 MainForm(如果硬要嵌套调用的话)。
    // 那么,实现就应该是在 MainForm 的 Load 事件里面 Show LoginForm,而不是反过来。
    // 这也是一种实现方式,而我个人认为,无论是哪一个,他们相互之间不应该产生强耦合的关系。
    // 这两种方式都在无意中形成了包含和被包含的关系。
      

  10.   

    MainForm mainForm = new MainForm();
    mainForm.Show();
    this.Visable=false;
    MessageBox.Show(“”);