
效果如图1。
在开发winform程序的时候,有些情况下,我们不希望用户随便点击,但是也想让用户可以看到具体的效果,这个时候我们想到了类似网页会有遮罩层这种功能,那么我们可以自己仿作一个。
博主本人看了网上有些方法,例如:博主june的采用自定义控件的方法,但是自定义控件没法设置透明的效果,必须做一些透明度的重制,而且在不少情况下难以使用,或者实现效果不好。
博主才用的方法比较原理很简单,设置Form的透明度和颜色,在把它指定显示在相关窗体上。
由于各种协调问题,博主还是研究了好几天,但总算不负众望。
实现过程:
1.设置Form的透明度和颜色等相关属性。
新建一个Form设置名称为ShadeLayer,其他属性如图2:

在初始化的时候,代码如下:
public ShadeLayer()
{
InitializeComponent();
this.BackColor = Color.FromArgb(79, 79, 79);
this.ShowInTaskbar = false;
}
一个是设置背景色,一个是不现实在任务栏中。
好了设置完毕。
2.调用,代码如下:
if (Application.OpenForms[i].Visible)
{
shadeLayer = new ShadeLayer();
shadeLayer.Tag = Application.OpenForms[i].Text;
shadeLayer.Location = Application.OpenForms[i].Location;
shadeLayer.Width = Application.OpenForms[i].Width;
shadeLayer.Height = Application.OpenForms[i].Height;
shadeLayer.Show(Application.OpenForms[i]);
}
设置相关属性值,shadeLayer.Show的时候,设置它的主窗体,这样就会显示在窗体之上了。
3.关闭,这个不用多说了吧,一个Close()方法就能解决。 简单方便。
文章评论