站长 发表于 2022-6-7 18:48:38

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

大家在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);
}

//然后满足条件后,提示选择后关闭:

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;
   }
}


页: [1]
查看完整版本: c#窗体winform程序根据条件阻止或禁用窗口关闭