首页 > 其他分享 >WinForm中给弹窗添加遮罩层

WinForm中给弹窗添加遮罩层

时间:2023-05-24 22:11:05浏览次数:33  
标签:遮罩 MaskForm void object shadowForm private 弹窗 WinForm

1.新建三个窗体:  

     

2.MainForm主窗体代码如下:

   private MaskForm _shadowForm;  

  /// <summary>
  /// 显示遮罩层
  /// </summary>
  private void ShowMask()
  {
    _shadowForm = new ShadowForm(this.Location,this.Size);
    _shadowForm.Show();
  }

  /// <summary>
  /// 关闭遮罩层
  /// </summary>
  private void HideMask()
  {
    if (_shadowForm != null)
    {
      _shadowForm.Close();
    }
  }  

  /// <summary>
  /// 放大视频显示画面
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void pbCamera1_Click(object sender, EventArgs e)
  {
    MessageForm msgFrm = new MessageForm(m_lUserID1);
    msgFrm.HideMaskAction += () => {
      this.HideMask();
    };
    this.ShowMask();
    if (msgFrm.ShowDialog() == DialogResult.OK)
    {
      this.HideMask();
      msgFrm.Dispose();
    }
  }

3.MessageForm主窗体代码如下:

  public Action HideMaskAction { get; set; }    

  private void lbClose_Click(object sender, EventArgs e)
  {
    this.HideMaskAction();
  }

  private void PictureZoomForm_FormClosed(object sender, FormClosedEventArgs e)
  {
    this.DialogResult = DialogResult.OK;
  }

4.MaskForm主窗体代码如下:

  public MaskForm(Point point, Size size)
  {
    InitializeComponent();
    this.Opacity = 0.5;
    this.BackColor = Color.LightGray;
    this.FormBorderStyle = FormBorderStyle.None;
    this.StartPosition = FormStartPosition.Manual;
    //位置和大小跟随主界面
    this.Location = point;
    this.Size = size;
  }

  private void MaskForm_FormClosed(object sender, FormClosedEventArgs e)
  {
    this.Dispose();
  }

 

此代码借鉴未来大大的文章,路径为:https://blog.csdn.net/qq_30725967/article/details/126540576

标签:遮罩,MaskForm,void,object,shadowForm,private,弹窗,WinForm
From: https://www.cnblogs.com/bingsying/p/17429698.html

相关文章

  • Windows开机弹窗 Program 无法启动
    Windows任务管理器启动项出现无效项目Program删除方法软件卸载异常,启动项没有被删除电脑启动会出现弹窗显示有Program无效的情况。因为任务管理器启动项有无效的启动项,删除即可。解决方法用户启动项计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run......
  • Winform虚拟/模拟键盘
    项目需要在触摸屏上增加一个虚拟键盘。记录下过程中遇到的问题及解决方法。1.模拟按键网上找到如下3种方法1)SendKeys.Send测试单独的shift不好用,所以最终未采纳此方法SendKeys.Send("^{E}");//shift+eSendKeys.Send("{Enter}");2)keybd_event最终选择了这个方法,简单有效......
  • C# Winform按钮避免重复点击
    btn_01.Enabled=false;//执行任务的函数和代码//执行任务的函数和代码Application.DoEvents();btn_01.Enabled=true;就是让应用程序的消息队列自动走完(在按钮正常前清空消息队列即可)......
  • c# winform定时刷新
     Thread多线程publicpartialclassForm2:Form{//横向滚动条记录的是像素位数//竖向滚动条记录的行的索引值intVerticalScrollIndex=0;intHorizontalOffset=0;publicForm2(){Initializ......
  • 盘点界面控件DevExpress WinForms的几大应用程序主题
    DevExpressWinForm控件包含了50+个自定义皮肤,其中涵盖了MicrosoftOffice和Windows11启发式的应用程序主题。PS:DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForm能完美构建流畅、美观且易于使用的应用程序,无论是Of......
  • 关闭Chrome浏览器 弹窗无法更新问题
    部分老电脑还用的是win7,但是win7的谷歌浏览器已经不支持更新了但是低版本的谷歌浏览器还不断的提示更新,然后弹框无法更新又无法更新,还一直提醒,就很烦。关闭方法只需要右键点击谷歌浏览器的快捷方式,选择属性找到快捷方式页面,找到目标栏在chrome的路径后面添加--dis......
  • Winform设置成默认以管理员方式启动的方法
     很多exe应用如果不以管理员权限运行,达不到运行目的,也会让用户很困扰。解决方法:1、在项目上右键添加新文件,选择新建app.manifest文件 2、按照下图参照注释部分修改trustInfo节点中的配置即可还有另外一个方法。这个需要写在Program.cs里面。staticvoidMain(s......
  • 点击周边可关闭的弹窗
    在Canvas下新建UI-Panel,依次添加ButtonImageText为子节点。  Panel铺满需要识别点击的区域在Panel上挂载Button组件取消Image的Image组件和Text的Text组件中RaycastTarget的勾选编写脚本,挂载在Panel上usingUnityEngine;usingUnityEngine.UI;publicclassWindo......
  • 用嵌入式sqlite部署winform应用程序
    EmbeddedResource表示数据库已嵌入到您的dll中。Copytooutputdirectory设置在这种情况下不适用,它用于BuildAction:Content嵌入数据库后,您基本上必须在首次使用时将其取消嵌入。为此,将其从Assembly中读取并将其存储到文件中。classEmbeddedResourceTest{publicsta......
  • win10关闭打开软件弹窗通知
    【关闭弹出通知】你要允许此应用对你的电脑进行更改吗?控制面板-->系统和安全-->安全和维护-->更改用户账户控制设置-->将左边滚轮拖到最下面“从来不通知”再“确定”保存。......