主窗体弹出子窗体,子窗体属性Opacity设为50%。如果:
Form2 frmsub= new Form2(this);
frmsub.Show();
这样弹出,窗体可以半透明。但如果:
Form2 frmsub= new Form2(this);
frmsub.TopLevel = false;
panel1.Controls.Add(frmsub);
frmsub.Show();这个时候frmsub子窗体在panel1里面show出来,但不透明了。这个问题怎么处理??????

解决方案 »

  1.   

    好像没什么好方法,MDI 也不行
      

  2.   


    panel1 没有透明属性。
      

  3.   

    ======================================
    那个 后面有个 panel1   你的窗体就是透明了 也没有用吧?
      

  4.   


    什么意思?
    我弹出的子窗体要透明,panel1 透明不了。也不用透明。
      

  5.   

    ======================================
    frmsub.TopLevel = false;
    panel1.Controls.Add(frmsub);
    frmsub.Show();panel1.Controls.Add(frmsub);
    这句应该是吧子窗体 添加到 panel1 里面去了吧?
      

  6.   

    ===================================
    他应该还是透明的,因为你的panel1所在的窗体是不透明的,一个透明的放在不透明的上面,那最后看到的 应该是不透明的那个
      

  7.   

    它不是不透明了,而是被panel挡住了
      

  8.   

    试了下 确实是不透明的透明是和主窗体有关的  要么都透明 要么都不透明我测试了 如果子窗体被挡住的话  子窗体的控件 应该是半透明的  但是效果上却不是  
    所以 应该是不透明的
    using System;
    using System.Windows.Forms;namespace WindowsFormsApplication10 {
        public partial class Form1 : Form {
            public Form1() {
                InitializeComponent();
                this.IsMdiContainer = true;
            }        private void button1_Click(object sender, EventArgs e) {
                Form2 form = new Form2();
               
                form.MdiParent = this;
                panel1.Controls.Add(form);
                form.Show();
                this.Text = form.Opacity.ToString();
            }
        }
    }