本帖最后由 lanfengye 于 2012-11-29 14:01:06 编辑

解决方案 »

  1.   

    你的Log是局部的,只在main的大括号内生效
      

  2.   

    跟我想的基本上一致,除了使用this还有其他的方式吗?
    这样看来我看的那篇也是有这个错误了.
      

  3.   

    声在外边声明
    Login_Frm Log;
    static void Main()
    {
         ...
         Log = new Login_Frm();
         ...
    }
      

  4.   


    提示的是当前上下文中不存在名称Log....就是因为这个原因,超出了对象的生命周期,根据你的代码,这个地方最好是用this,没有必要把这种窗体定义成全局变量。
      

  5.   

    private void button1_Click(object sender, EventArgs e)
    {
       Login_Frm Log = new Login_Frm();   if (textBox1.Text == "lan")
       {
          Log.DialogResult = DialogResult.OK;
       }
    }
      

  6.   

    直接用this就可以了      static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Login_Frm Log = new Login_Frm();//这里改改。。
                if ( Log.ShowDialog() == DialogResult.OK)
                {
                    Application.Run(new Main_Frm());
                }
            }
    然后FORM上面的按钮是这样的: 
            private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "lan"){
                    Log.DialogResult = DialogResult.OK;
                    ^^^^
                }
            }
      

  7.   


    对对 我看错了,我以为那button是mainform里的
      

  8.   

    可以这样吗?原本program.cs里面main(){}里头就有一个Log了.现在在这里再声明一个Log,虽然不会冲突,但是它们之间的值有关联吗?
      

  9.   

    代码逻辑上有问题;1. 首先,应该在Login_Frm里声明一个public 变量;  2. 点按钮button1_click的时候,设置1中的变量;3. 关闭窗体, 程序回到Program中的static void Main(), 判断Login_Frm 中的变量执行后续代码;
    /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);            Login_Frm frmLogin = new Login_Frm();
                frmLogin.ShowDialog();
                if (frmLogin.boolIsSuccess)
                {
                    Application.Run(new MainForm());
                }
                else
                {
                    Application.Exit();
                }
            }Login_Frm:
     public bool boolIsSuccess = false;
     private void btnLogin_Click(object sender, EventArgs e)
     {
        if (textBox1.Text == "lan")
          boolIsSuccess  = true;
        this.Close();
     }
      

  10.   


    对于根据窗体的返回值来判断打开哪个窗体或退出操作,我个人认为还是通过窗体的DialogResult的枚举值来判断比较好,呵呵,这样写起代码来更容易理解相对来说也不容易出错,否则还需要参考其他窗体的公共变量,不注意容易写错或忘记判断