说明:
我有2个表格(form1
,form2
),
form1
backgroundImage = GetImage(“http://us.cdn2.123rf.com/168nwm/exe2k/exe2k1210/exe2k121000019/15806640-chess-board-background-photo.jpg”)
######################################
form2
backcolor = black
form2
transparencykey = black
######################################
注意:
form2小于form1
现在让我们将form2插入form1:
form2.TopLevel = false
form2.Show()
form1.controls.add(form2)
结果应该是:
(B =黑)(W =白色)
--------------------
form1 - [] X
--------------------
|B|W|B|W|B|W|B|W|B|W
--------------------
form2 - [] X
--------------------
|B|W|B|W|B|W|B|W|B|W
|B|W|B|W|B|W|B|W|B|W
|B|W|B|W|B|W|B|W|B|W
--------------------
|B|W|B|W|B|W|B|W|B|W
--------------------
但结果是:
(B =黑)(W =白色)
--------------------
form1 - [] X
--------------------
|B|W|B|W|B|W|B|W|B|W
--------------------
form2 - [] X
--------------------
|B|B|B|B|B|B|B|B|B|B
|B|B|B|B|B|B|B|B|B|B
|B|B|B|B|B|B|B|B|B|B
--------------------
|B|W|B|W|B|W|B|W|B|W
--------------------
form2 backcolor = black。
但form2 transparencykey =黑色。
这意味着我无法在表单控件中使用transparencykey / opacity
我唯一能做的就是在form1.panel1上放置form2:
form2.show()
//form2 is not in form 1
waitUntilFormShown(form2)
do while true
form2.location = form1.panel1.location
application.doEvents()
system.thrading.thread.sleep(1)
loop
(我没有查看代码)
这不是解决问题的正确方法
(在form1上最小化/最大化/调整大小时,需要调用form2的最小化/最大化/调整大小,并且有更多理由说明我不这样做。)
剩下要问的最后一件事是:我该如何解决?或者为什么会发生?...
注意:这个“bug”不适用于图片框控件。(这就是我从一开始就问的原因)。
答案 0 :(得分:0)
您可以将form2 opacity属性更改为0并将透明度键保留为默认值,并将背景颜色设置为与form1相同
Form2 frm = new Form2();
frm.TopLevel = false;
frm.BackColor = Form1.BackColor;
frm.Opacity = 0;
frm.Show();
Form1.Controls.Add(frm);