C#中的窗体关闭事件
本人做了个类似QQ的聊天工具,登陆的时候能够判断在线或离线,现在想在退出程序的时候将数据库中的状态改为离线,可是不知道怎么弄,请个人高手帮忙,另外,要求当直接任务管理器里...
本人做了个类似QQ的聊天工具,登陆的时候能够判断在线或离线,现在想在退出程序的时候将数据库中的状态改为离线,可是不知道怎么弄,请个人高手帮忙,另外,要求当直接任务管理器里结束进程或突然死机的时候一样能修改状态
展开
7个回答
展开全部
你可以在Application.ApplicationExit事件中修改数据库中的状态(离线)
Application.ApplicationExit += new EventHandler(this.OnApplicationExit);//这句在程序运行时加
private void OnApplicationExit(object sender, EventArgs e)
{
//此处改数据库中状态
}
但是要想结束进程或突然死机也改,是不可能的。像直接断电源、断网等,都不可能再有操作的了
QQ也没法解决这个问题,
但可以每隔几分钟改一下数据库中的一个时间字段,如3分钟,服务器再写个程序每隔5分钟更新一下状态,如(Update 表名 Set 状态=离线 where 状态= 在线 and (当前时间-3分钟)>时间字段)
Application.ApplicationExit += new EventHandler(this.OnApplicationExit);//这句在程序运行时加
private void OnApplicationExit(object sender, EventArgs e)
{
//此处改数据库中状态
}
但是要想结束进程或突然死机也改,是不可能的。像直接断电源、断网等,都不可能再有操作的了
QQ也没法解决这个问题,
但可以每隔几分钟改一下数据库中的一个时间字段,如3分钟,服务器再写个程序每隔5分钟更新一下状态,如(Update 表名 Set 状态=离线 where 状态= 在线 and (当前时间-3分钟)>时间字段)
展开全部
恩,对窗体关闭事件进行拦截,如下:
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Main_FormClosed);
然后在 Main_FormClosed 方法体内 书写相应的的逻辑代码。
窗体会在关闭时,调用该方法体内的逻辑
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Main_FormClosed);
然后在 Main_FormClosed 方法体内 书写相应的的逻辑代码。
窗体会在关闭时,调用该方法体内的逻辑
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.重写析构函数,释放资源。在类事件里处理数据库中的记录。
2.或者Closing | Closed
2.或者Closing | Closed
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还是隐藏比较合适,因为在Program.cs中,默认是启动form1,如果form1关闭了,程序就退出了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、在Program.cs里先打开form2
2、在form2中的构造函数中这样写:
public
Form2()
{
Form1 form1
=
new
Form1();
if
(form1.ShowDialog()!=DialogResult.OK)
{
return;
}
InitializeComponent();
}
3、在form1中打开form2的事件上这样写:
this.DialogResult
=
DialogResult.OK;
this.Close();
2、在form2中的构造函数中这样写:
public
Form2()
{
Form1 form1
=
new
Form1();
if
(form1.ShowDialog()!=DialogResult.OK)
{
return;
}
InitializeComponent();
}
3、在form1中打开form2的事件上这样写:
this.DialogResult
=
DialogResult.OK;
this.Close();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询