Foxtable(狐表)用户栏目专家坐堂 → 网络通断该显示的信息看不到结果


  共有4117人关注过本帖树形打印复制链接

主题:网络通断该显示的信息看不到结果

帅哥哟,离线,有人找我吗?
hongsejiyi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:5308 威望:0 精华:0 注册:2019/1/1 15:53:00
网络通断该显示的信息看不到结果  发帖心情 Post By:2023/4/20 12:38:00 [显示全部帖子]

项目事件:NetworkAvailabilityChanged,里边的代码如下
If e.IsAvailable = False Then
    MessageBox.Show("NO")
Else
    MessageBox.Show("Yes")
End If

完成的意思是,当网络可用状态发生变化时,执行该代码,显示指定的信息,我用的是自定义窗口为程序启动窗口,并在自定义窗口中Afterload事件中,使用了如下语句

e.Form.BaseForm.ShowInTaskbar = True
BaseMainForm.Visible = False
BaseMainForm.Left = -10000

完成的意思是让主窗口隐藏,只看到我自定义的窗口,做为主窗口,发布之前测试,一切正常,系统主窗口隐藏,显示我的定义窗口做为主窗口,功能也正常,当断掉当前网络时,显示提示窗口NO,再恢复网络时,显示提示窗口Yes
但发布程序后,单独发布后的执行该程序,随着网络的通断,看不到指定的提示,但如果同时开着源设计程序窗口(程序的是设计状态,即项目是打开状态),运行发布程序时,通断网络,会正常看到提示。
请问应该如何处置?
[此贴子已经被作者于2023/4/20 12:43:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:5308 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2023/4/20 14:41:00 [显示全部帖子]

刚才我试了一下,将我自定义窗口,由模式窗口改变成主窗口,一切是正常的,但再改回模式窗口,就不正常了(感觉是那个信息一定是发到了原来那个系统窗口了,因为隐藏就看不到了)

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:5308 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2023/4/20 15:09:00 [显示全部帖子]

试了一下,还是不行?但是源项目窗口(也就是源程序的项目处于打开状态时,按说和这个有啥关系呢,因为发布后和源程序无关了),可就是这么奇怪,它开着居然能正常看到提示信息
而且发布前,预览也是正常的!
[此贴子已经被作者于2023/4/20 15:09:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:5308 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2023/4/20 15:27:00 [显示全部帖子]

我新建了一个空白项目,测试也没有问题(无需打开源项目),也是正常的!真是见鬼了!

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:5308 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2023/4/20 16:05:00 [显示全部帖子]

我把自定义窗口由main改名main1,并保存为窗口文件,建立一个新窗口main,再用保存的窗口文件生成新窗口,程序哪儿也没有改变,重新发布,一切正常,也和那个本无关的源项目窗口打开无关了!

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:5308 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2023/4/20 18:22:00 [显示全部帖子]

老师,这个问题仍然没有解决(后来,我发现有一个程序驻留内存,没有释放,所以感觉重新建立窗口就没有问题了)
您发的这个【项目2】的例子,只要是在AfterProject事件中,使用 Forms("窗口1“).open打开,然后再发布成123.exe,再执行123.exe时, 就会出现我的问题
如果不在AfterProject事件中,使用 Forms("窗口1“).open打开,只是程序运行到主界面,再通过工具栏上的”窗口“选择窗口1,就一切正常

我又建立了一个空白的项目,模拟以上,就是这个规律!

但,即使在AfterProject事件中,使用 Forms("窗口1“).open打开,把”窗口1“的的窗口类型由“模式窗口”改为“独立窗口”,就是正常的,但在启动后的主窗口,我需要的是模式窗口啊,咋办?

[此贴子已经被作者于2023/4/20 19:46:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:5308 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2023/4/20 21:10:00 [显示全部帖子]

通过计划的确可以解决这个问题,但带来了更大的问题,就是屏幕极明显的闪烁,且有那么一刹那,显示主系统界面,感觉非常LOW
老师的计划管理提醒了我,让我不再寄希望于NetworkAvailabilityChanged事件了,只用计划管理,配合TryConnectHost()函数,完美解决了这个问题

计划默认可执行,间隔5秒。当网络通断时,都有及时的显示正常且正确的提示信息,这正是我想要的结果 

'wzlt 是一个全局变量,默认值为 false
If Forms("main").Opened = True Then
    Dim ztl As WinForm.Strip = Forms("main").Strips("状态栏")
    ztl.Items("用户").Text = "当前用户:" & User.Name
    ztl.Items("时间").Text = Date.now
    
    Dim wz As String = "www.baidu.com" '自己服务器域名       
    Dim wl As Boolean = TryConnectHost(wz)
    If wl = True Then
        If wlzt = False Then   ‘避免反复提示
            PopMessage("网络链接已恢复", "提示", PopiconEnum.OK, 5)
        End If
        
        ztl.Items("网络").Text = "网络状态:[正常]"
        wlzt = True
    Else
        If wlzt = True Then 
            PopMessage("失去网络链接,请检查", "提示", PopiconEnum.OK, 5)
        End If
        
        ztl.Items("网络").Text = "网络状态:[不正常]"
        wlzt = False
    End If
End If
[此贴子已经被作者于2023/4/20 21:10:47编辑过]

 回到顶部