效果如图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()方法就能解决。 简单方便。
文章评论