想要实现在PictureBox上的控件透明,于是找到了这边文章,但是为什么出来的效果是我放在picturebox上的控件看不见了。
求解!
要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件的透明指对父窗体透明。如果不设置Parent属性,那么控件将只对Form透明,显示的时候都会把Form的背景色(默认为Control)重刷一遍作为自己的背景。
在控件比较多的情况下,可以使用Panel控件,将某一组的控件都放到Panel中,然后只对此panel设置背景透明即可,则其他控件都跟着实现了背景透明。
如,现有一PictureBox控件,十多个Label以及Button,那么只将这些Label和Button放入Panel中。同时在Form_Load事件中加入如下代码即可实现背景透明:
   this.picturebox1.SendToBack();//将背景图片放到最下面
   this.panel1.BackColor = Color.Transparent;//将Panel设为透明
   this.panel1.Parent = this.picturebox1;//将panel父控件设为背景图片控件
   this.panel1.BringToFront();//将panel放在前面
以上代码即可实现所有的控件都对PictueBox背景图片透明本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/renyouprince/archive/2009/01/14/3774170.aspx

解决方案 »

  1.   


    代码很少 窗体上就一个PictureBox 一个 CheckBox  出来的效果是看不见 CheckBox。
            private void Form1_Load(object sender, EventArgs e)
            {
                this.pictureBox2.SendToBack();
                this.checkBox1.BackColor = Color.Transparent;
                this.checkBox1.Parent = this.pictureBox2;
                this.checkBox1.BringToFront();
            } 另外这段代码放到PDA上运行的时候,this.checkBox1.Parent = this.pictureBox2;这句会抛异常。 异常为:
    ((System.Windows.Forms.Control)(this.label1)).Parent”引发了“System.ArgumentException”类型的异常 System.Windows.Forms.Control {System.ArgumentException}
      

  2.   

     这样写试试private void Form1_Load(object sender, EventArgs e)
      {
      this.pictureBox2.SendToBack();  this.checkBox1.BackColor = Color.Transparent;
    (或者this.checkBox1.ForeColor = Color.Transparent;)
      this.checkBox1.BringToFront();
      }
      

  3.   

    ForeColor 是文字的颜色啊
    而且我试过 不行
      

  4.   

    问题知道了,是因为this.checkBox1.Parent = this.pictureBox2;这句代码执行后,checkbox的位置也发生了变化,不再是相对于Form 而是相对于PictureBox了。所以看起来以为消失了。但是这句代码到Windows mobile上还是会抛异常。