Winform 窗体遮罩层懒人处理法

前言

之前有个项目需要执行一个略微耗时的操作大概五六七八九十秒这样子,这个时候程序不能做其他操作,只能等待操作完成。为了提升一丝使用体验同时让Winform程序看上去高级一点🎃🎃🎃,就想到加一个遮罩层(MaskLayer)。虽然Winform没有原生的遮罩层,但是实现起来也不是很麻烦。

遮罩层在Winform的实现方式一般分为两种:

  • 自定义控件,继承Contorl重写来实现遮罩层
  • 新建一个假窗体来达到同样的效果

懒人懒人,当然要用最少代码干最多的活喽🥂🥂🥂,我们来通过新窗体来实现。

功能介绍以及代码实现

原理很简单,就是新建一个有一定透明度的空白窗体,边框样式设置为无边框,启动位置设置为手动设置(这样我们就可以顺便指定他出现的位置了),最后再给它整个遮罩背景色就万事大吉了🧨🧨🧨

新建一个窗体MaskForm

  public partial class MaskForm : Form
  {
  public MaskForm(Point point, Size size)
  {
  InitializeComponent();
  Opacity = 0.8;
  BackColor = Color.LightSlateGray;
  FormBorderStyle = FormBorderStyle.None;
  StartPosition = FormStartPosition.Manual;
  //位置和大小跟随主界面
  Location = point;
  Size = size;
  }
  private void MaskForm_FormClosed(object sender, FormClosedEventArgs e)
  {
  Dispose();
  }
  }

这样就能实现遮罩层效果了,调用也很简单,在想添加遮罩效果的Form里面创建一个MaskForm对象,直接Show就可以了。举个简单的例子,比如我想在Form1里加个遮罩效果,我加个button点击之后就显示遮罩,然后五秒之后关闭遮罩:

  private void button1_Click(object sender, EventArgs e)
  {
  MaskForm mask = new MaskForm(this.Location, this.Size);
  mask.Show();
  DateTime now = DateTime.Now;
  while (now.AddSeconds(5) > DateTime.Now) { }
  mask.Close();
  }

MaskForm

遮罩实际比窗体大点可不是我的锅啊🤡,我在我的自定义窗体上没这问题,严丝合缝的!!!

进阶玩法

上面是最简单的遮罩效果使用,我们还可以来个进阶版 - 随意控制MaskForm的显示位置、大小。显然我们可以通过实例化MaskForm窗体的时候控制它,比如我们想要个全屏的:

  MaskForm mask = new MaskForm(new Point(0,0), new Size(1920,1080));

image-20230513094851517

🎉🎉🎉

完结撒花,就这样吧,有帮助到你的话记得点个赞哈,比心💗💗💗

有疑问的话可以评论留言哈。

 

 

出处:https://www.cnblogs.com/BoiledYakult/p/17396815.html

posted on   jack_Meng  阅读(722)  评论(1编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-06-12 戴德金分割原理
2021-06-12 什么是自然数.整数,有理数,无理数,实数,虚数
2020-06-12 全网最硬核解读计算机启动原理
2017-06-12 图片的base64编码通过javascript生成图片--当前URL地址的二维码应用
2017-06-12 用javascript实现base64编码器以及图片的base64编码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩