我创建了一个简单的用户控件,它是手动创建的,类似于
MyUserControl ctrl = new MyUserControl();
控制装置的设计具有
背景色=颜色。透明的
这很好,直到我设置
父母亲
将控件转换为窗体,然后将其转换为窗体的颜色。
听起来像是透明的,但它所做的是隐藏表单上存在的所有控件。我不能100%确定是控件获得了坚实的背景,还是当我连接它时发生了其他事情,从而阻止了其他控件的显示。
基本上,如果你这样做
-
创建表单
-
在上面放一个按钮
-
在按钮的点击处理程序中,您可以执行以下操作
例子
MyUserControl ctrl = new MyUserControl();
ctrl.Parent = this;
ctrl.BackColor = Color.Transparent;
ctrl.Size = this.Parent.ClientRectangle.Size;
ctrl.Location = this.Parent.ClientRectangle.Location;
ctrl.BringToFront();
ctrl.Show();
基本上,我希望用户控件覆盖整个窗体,同时在窗体上显示底层控件(因此是透明背景)。我不想将它添加到表单控件集合中,因为它并不真正属于表单,它只是显示在其他所有内容的顶部
我试着做同样的事情,但没有设置家长,但后来控件根本没有显示出来。
谢谢!
编辑:如果我覆盖用户控件中的OnPaintBackground方法并阻止绘制背景,那么它就可以工作,但是这会在使用DrawImage在控件中绘制PNG图像的透明部分时出错,这是有道理的。