以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何避免出现重复提示!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=103796)

--  作者:happyft
--  发布时间:2017/7/17 11:30:00
--  如何避免出现重复提示!
BeforeShowErrorMessage中有如下代码:
If e.Message2.indexof("一般性网络错误") > -1 Or e.Message2.indexof("SQL Server 不存在") > -1 Then
    Dim Result As DialogResult
    Result = MessageBox.Show("网络不通,点击是将退出,点击(否)继续等待网络正常后再操作!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        system.diagnostics.process.GetProcessesByName("Newsource")(0).kill
    Else
        e.Cancel=True
        Return
    End If
end if

上述代码的目的是网络不通时提示用户,但网络不通后一直提示出现很多的相同的提示框,如何实现只提示一次,即只要弹出一个,后面的就不要弹出了
还有个问题就是网络不通后即使用户点击是也无法结束进程,还会弹出一些其他的出错框,即结束进程也不能终止其他代码的运行.

谢谢!

--  作者:有点甜
--  发布时间:2017/7/17 11:39:00
--  

1、提示窗口你可以做一个独立窗口,显示出来。

 

    代码上判断自己的窗口是否打开,如果打开了,就不重复打开、不执行后续的代码。

 

2、其它的出错框具体是什么错误?在事件里面一起捕捉。


--  作者:HappyFt
--  发布时间:2017/7/17 12:19:00
--  
除了自己弄窗口外,能否直接捕捉MessageBox这个对话框吗?比如根据其显示的内容来判断
--  作者:有点甜
--  发布时间:2017/7/17 12:32:00
--  

你可以根据提示窗口的标题判断

 

http://www.foxtable.com/webhelp/scr/2713.htm

 


--  作者:HappyFt
--  发布时间:2017/7/28 21:22:00
--  
如果单独做了窗口,不重复打开好控制,但怎么控制不执行后面的代码,比如点击了窗口中的某个按钮,里面有很多代码,执行到一半时网络突然断开,此时弹出提示,要如何禁止那一半还没有执行的代码继续执行,不然也会出现一系列的错误
用了return没用

--  作者:有点蓝
--  发布时间:2017/7/28 21:29:00
--  
这个几乎无解。

要做也可以,出错后设置一个全局状态即可,每个地方都判断一下这个状态。但是这样必然导致效率非常低,用个成语说就是因噎废食。还不如给异常定义一下级别,高级别的异常直接就强制退出程序好了

这也是为什么大多数程序对于某些不可抗力的异常都是听之任之。

--  作者:HappyFt
--  发布时间:2017/7/28 22:23:00
--  
如果用户输入了很多资料还没有保存时出现网络断开强行关闭就会导致网络好时又要重新再次录入,用户就是想如果网络突然断开时就弹出提示,然后就停在那里,不要弹出错误,他可以等网络好时再继续操作就不用重新录入一遍数据,这样没法实现吗,蓝老师?
--  作者:有点蓝
--  发布时间:2017/7/28 23:00:00
--  
Foxtable目前的异常处理模式确实不好处理。

在连接网络或者数据库前先判断网络状态,在进行操作,如果操作异常,转到BeforeShowErrorMessage,然后设置一下全局变量为失败,下一个代码判断这个全局变量如果为失败就停止执行并退出。重复这个过程即可。

不过有些异常是Foxtable强行抛出的,没有办法捕捉并去掉的。这种情况就就没有办法不弹出错误了。