我在程序的开始部分声明了两个窗体
private static Form1 f1;
private static Form2 f2;然后在Main()中是如下写法
static void Main() 
{
f1 = new Form1();
Application.EnableVisualStyles();
Application.Run(f1);
}
在From1中是这样的
private void Form1_Load(object sender, System.EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
f1.Visible = false;
}
但执行了为什么f1还是可见的?

解决方案 »

  1.   

    把 f1.Visible = false; 这句话放到其他地方试试看,比如 form2_load
      

  2.   

    在f1上放一个Button 在Click中用
       Form2 f2 = new Form2();
       f2.Show();
       f1.Visible = false
      

  3.   

    看来楼主不懂调试啊,如果button没问题,我们就可以肯定调用的属性没问题,那就是load里面有问题,缩小范围再解决。
      

  4.   

    waitrabbit(炭炭)兄弟说的好像不对
    同样是 Form2 f2 = new Form2();
    f2.Show();
    f1.Visible = false;
    放在按钮里和放在load中的效果是完全不一样的
    我也不知道为什么
      

  5.   

    这是因为你调用的Application.Run(f1);本身就有显示f1的作用。在调用Run之前已经new了form,form的load事件处理程序已经执行过了,这时再调用Run实际上又把Visible给改回来了。
      

  6.   

    那请问ggyz兄弟我该怎么做呢?
      

  7.   

    使用Application.Run那个不带参数的版本就可以了。
      

  8.   

    忘了说了,Load事件要form第一次显示之前才会激发,如果你不显示就不激发了。你可以先显示再隐藏。也可以把Form1_Load的代码写成别的函数,专门调用一下。
      

  9.   

    ggyz兄弟能给出具体的代码吗?
      

  10.   

    static void Main() 
    {
      f1 = new Form1();
      f1.Visible = true;  //或 f1.Show();
      f1.Visible = false;  //或 f1.Hide();
      Application.EnableVisualStyles();
      Application.Run();
    }
    这样就可以了呀(f1闪一下),也可以把Form1_Load里的代码直接放到Main中来。