private void button1_Click(object sender, EventArgs e)
        {
        private void button1_Click(object sender, EventArgs e)
        {
            //Form1 frm1 = new Form1();
            //frm1.Hide();
            this.Hide();
            //Form3 frm3 = new Form3();
            //frm3.Show();        }为什么我写成//Form1 frm1 = new Form1();
            //frm1.Hide();    
这样后就无法隐藏窗口1呢?而写成this. Hide();就对呢?
难道我对this有理解偏差?

解决方案 »

  1.   

    frm1.Hide()隐藏的是你创建的这个窗体,
    this.hide()隐藏的是你的主窗体
      

  2.   

    文不对题啊 我创建的就是Form1也就是所谓的主窗体啊
      

  3.   

    楼主你搞混了吧,你创建的form1 都没显示出来,隐藏什么啊你的当前窗体是不是也是form1啊,为什么在他里面又去创建一个本身呢
      

  4.   

    我创建的就是Form1也就是所谓的主窗体啊Form1 frm1 = new Form1();
    frm1是新对象,你的主窗体,应该是在main函数里创建的吧.
      

  5.   

    你那个form1是new出来的 本身就没show你可以试试先show在hide
    this的form1是本身的 在load时候就存在
      

  6.   

    namespace _1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form1 frm1 = new Form1();
                frm1.Show();
                frm1.Hide();            Form3 frm3 = new Form3();
                frm3.Show();
            }
        }
    }你是不是这个意思啊?我试了下 还是无法隐藏Form1
      

  7.   

    那个窗体经过Application.Run的时候会再显示出来。。
    不是你没hide掉。
      

  8.   

    修改program文件的Main方法就行了呀。
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    AdminLoginForm admin = new AdminLoginForm();
    if (admin.ShowDialog() == DialogResult.OK) {
    Application.Run(new MainForm(admin.Admin));
    } else {
    MessageBox.Show("没有登录,程序退出!");
    }
    登录成功时候,AdminLoginForm 登录按钮的单击事件中要写 this.DialogResult = DialogResult.OK;
    这样就实现了,登陆成功打开主窗体,登陆失败退出程序。
      

  9.   


    看问题:关于运行时主窗体隐藏,显示窗体1,点击FORM1上的BUTTON1后关闭窗体1,显示主窗体3。
      

  10.   

    你这两个form1不是同一个
                Form1 frm1 = new Form1();
                frm1.Show();
                //frm1.Hide();            Form3 frm3 = new Form3();
                frm3.Show();
    如此会出现3个form
    this是一个  你那个frm1是一个 frm3是一个
    只不过this和frm是同一个类的不同实例
    所以你的那个new form1本省就不好 你想要的在项目生成是已经为你做好form1的分配了
      

  11.   

    在program.cs中你会看到            Application.Run(new Form1());
    明白?
      

  12.   

    我这个菜鸟写了一个看是否满足。
    主程序
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            private Boolean flg = false;
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Activated(object sender, EventArgs e)
            {
                this.Visible = flg;
            }        private void Form1_Load(object sender, EventArgs e)
            {
                Form2 f = new Form2();
                f.ShowDialog();
                flg = f.loginFlg;
                if (!flg)
                {
                    Application.Exit();
                }        }
        }
    }
    Loginnamespace WindowsFormsApplication1
    {
        public partial class Form2 : Form
        {
            public Boolean loginFlg = false;
            public Form2()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                if (!"1".Equals(textBox1.Text))
                {
                    MessageBox.Show("!!!");
                    return;
                }
                loginFlg = true;
            }
        }
    }
      

  13.   

    <code=C#>
        public partial class Form1 : Form
        {        public Form1()
            {
                InitializeComponent();
                
            }        private void Form1_Load(object sender, EventArgs e)
            {
                Form2 frm1 = new Form2();
                Form2 frm3 = new Form2();
                frm3.Text = "form3";
                ((Button)frm1.Controls["button1"]).DialogResult = DialogResult.OK;
                frm1.ShowDialog();
                if (frm1.DialogResult == DialogResult.OK)
                {
                    frm1.Close();
                    frm3.ShowDialog();
                }
            }
        }
    </code>拿分走人,form2是另外新建的一个窗体项目,否则得话会创建窗体句柄错误,简单来说就是会陷入死循环,form2上就拖了一个button其他的什么都没做
      

  14.   


    为什么我写成//Form1 frm1 = new Form1();
    //frm1.Hide(); 
    这样后就无法隐藏窗口1呢?而写成this. Hide();就对呢?
    难道我对this有理解偏差?=============================================================
    frm1是你新申请的一个Form1类的实体,而this是程序的主窗体本身这个实体。
      

  15.   

    谁告诉你form1就是主窗体了?
      

  16.   

    楼主,帮你把10楼的修改一下了。强烈建议你使用这种方法!!这才是登录窗口的正解
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main() {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Form1 form1= new Form1();
                if (form1.ShowDialog() == DialogResult.OK) {
                    Application.Run(new Form3());
                } else {
                    MessageBox.Show("没有登录,程序退出!");
            }
      

  17.   

    登录的那个别关了,给隐藏掉吧
    要不在主窗体的LOAD事件里SHOWDIALOG登录窗体
    登录成功后 this.Close()
      

  18.   

    不能new ,new的意思是创建一个新的窗体就不是当前窗体了
    this代表当前的窗体当然可以了啊
    在主窗体的LOAD事件里SHOWDIALOG登录窗体
    登录成功后 this.Close()
         ok啦!!!!!!!!!!
      

  19.   

    推:http://download.csdn.net/source/2137363看看其中的登入窗口切换到主窗口是如何实现的吧,还有如果登入失败将再次回到登入窗口这个过程。