今天是: 2024-04-23    "世界读书日"  推动更多的人去阅读和写作

技巧网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问移动社区

搜索
热搜: PLC 视觉 活动
查看: 1126|回复: 0

[C#编程] c#窗体winform程序根据条件阻止或禁用窗口关闭

[复制链接]

  离线 

TA的专栏

累计签到:244 天
连续签到:2 天

75

主题

5

回帖

336万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3360427
发表于 2022-6-7 18:48:38 | 显示全部楼层 |阅读模式
大家在C#开发过程中,可能有的项目程序不允许关闭,需要长期保持打开状态,来监控其他程序。以下方法可以实现,相当于禁用窗体关闭按钮。

//首先添加窗口关闭事件委托
[C#] 纯文本查看 复制代码
在窗口关闭事件中处理
private void TestForm_FormClosing(object sender, FormClosingEventArgs e)
{
    switch (e.CloseReason)
{
//应用程序要求关闭窗口
case CloseReason.ApplicationExitCall:
e.Cancel = false; //不拦截,响应操作
break;
//自身窗口上的关闭按钮
case CloseReason.FormOwnerClosing:
e.Cancel = true;//拦截,不响应操作
break;
//MDI窗体关闭事件
case CloseReason.MdiFormClosing:
e.Cancel = true;//拦截,不响应操作
break;
//不明原因的关闭
case CloseReason.None:
break;
//任务管理器关闭进程
case CloseReason.TaskManagerClosing:
e.Cancel = false;//不拦截,响应操作
break;
//用户通过UI关闭窗口或者通过Alt+F4关闭窗口
case CloseReason.UserClosing:
e.Cancel = true;//拦截,不响应操作
break;
//操作系统准备关机
case CloseReason.WindowsShutDown:
e.Cancel = false;//不拦截,响应操作
break;
default:
break;
}

//if(e.Cancel == false)
// base.OnFormClosing(e);
}

//然后满足条件后,提示选择后关闭:
[C#] 纯文本查看 复制代码
if (GModel.PJR!=null && !GModel.PJR.IsSaved&&e.CloseReason == CloseReason.MdiFormClosing)
{
   DialogResult Dt = MessageBox.Show("当前项目没有保存操作,确实不保存吗?", "系统提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
    if (Dt == DialogResult.OK)
    {
       //new DALMainInfos().DeleteAll();///清空数据
       //Application.Exit();
       e.Cancel = false;
    }
    else
    {
       e.Cancel=true; 
     } 
} 


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 
QQ在线咨询
售前咨询热线
暂无
售后咨询热线
暂无
快速回复 返回顶部 返回列表