登陆窗口切换后事件函数失效的解决办法

本文探讨了C#中模态显示与非模态显示的区别,特别是在事件函数处理上的不同表现。作者通过解决一个具体问题——从登录界面切换到主界面时事件函数失效的情况——揭示了如何正确使用Show和ShowDialog方法来避免事件丢失。


PDA使用SOCKET环境,是用事件函数返回服务器的消息,我的LOGIN FORM有一个事件函数:

  ggg.clientSocket.OnServerMsg += new xxhSocket.EventHandler(ServerMsgPush);   //服务器返回消息事件 



在 MAIN FORM里,也有一个事件函数:

Logon.ggg.clientSocket.OnServerMsg += new xxhSocket.EventHandler(ServerMsg);   //服务器返回消息事件 


遇到一个奇观的事情,从LOGIN向MAIN切换的时候,LOGIN的事件函数居然不起作用,我的心跳功能可是挂在这里面的哇!


最后一查资料,才发现:如果要保留原FORM的消息事件应该在新窗口用show。

在C#中窗口的显示有两种方式:模态显示(showdialog)和非模态显示(show)。
二者最常见的区别是:

模态显示后,
弹出窗口阻止调用窗口的所有消息响应。
只有在弹出窗口结束后调用窗口才能继续。
在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值