你隐藏的是在循环里面 new 的 40 个控件, 而不是循环外的 40 个控件要想隐藏循环外面的 40 个控件, 应该这样:    PictureBox[] px = new PictureBox[40]; 
            for (int i = 1; i < 40; i++) 
            { 
                px[i].Hide(); 
              
            } 

解决方案 »

  1.   

    谢谢楼上的`。。
    我去掉px[i] = new PictureBox(); 
     报错: 未将对象引用设置到对象的实例。
      

  2.   

      PictureBox[] px = new PictureBox[40]; 
       for (int i = 1; i < 40; i++) 
       { 
            px[i] = new PictureBox(); 
            ((PictureBox)px[i]).Hide();   
       } 
    或者
      PictureBox[] px = new PictureBox[40]; 
      PictureBox pic = null;
       for (int i = 1; i < 40; i++) 
       { 
            pic = new PictureBox(); 
            px[i] = pic;
            pic.Hide();               
       }
      

  3.   

    不知道楼主的没有效果是什么意思。 我测试了下。 单独一句  new picture(); 本来在界面上就没有任何显示。
      

  4.   

     PictureBox[] px = new PictureBox[40]; 
                for (int i = 1; i < 40; i++) 
                { 
                    px[i] = new PictureBox(); 
                    px[i].Hide(); 
                  
                } 
    这里只是隐藏了循环里的new 的picturebox.
    并未对已经实例化的picturebox进行隐藏操作!当然就没有效果了