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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具