答案 0 :(得分:7)
答案 1 :(得分:2)
答案 2 :(得分:2)
答案 3 :(得分:2)
我知道这是一个老线程,但我偶然发现了另一种简单的解决方案。
创建一个继承自Label的新透明标签控件:
class TransparentLabel : Label {
public TransparentLabel()
{
this.SetStyle(ControlStyles.Opaque, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
}
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT
return parms;
}
}
}
(我没有声称发明了这个课程,它来自其他地方,可能是Hans Passant :-))
在您的设计器中,创建一个TransparentLabel并为其命名,例如tLabel1
。设置属性如下:
AutoSize
- 错误,以便您可以将其展开以涵盖所有控件
你想要禁用(当然可能是整个形式)。Text
- 空白。Visible
- 假(如果你想在中看到它,则保持为真
设计师,在这种情况下,将它移动到Z订单的后面,这样你就可以
还可以看到表单运行时它将覆盖的控件。在表单中,当您要禁用控件时执行以下代码:
tLabel1.Visible = true;
tLabel1.BringToFront(); // if your designer has it at the back
这是有效的,因为当它可见时,TransparentLabel会获得所有鼠标点击和按键而不是基础控件,但它是透明的,因此您仍然可以看到底层控件。鼠标右键单击不执行任何操作,因为标签没有上下文菜单。
要重新启用控件,只需再次将Visible属性设置为false,一切都会恢复生机。
答案 4 :(得分:1)