以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [分享]关于狐表编程的一点心得  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=27077)

--  作者:菲舍尔
--  发布时间:2012/12/21 11:07:00
--  [分享]关于狐表编程的一点心得

使用狐表差不多一年左右了,也写了几个小项目,现就一些狐表编程的一些心得和大家分享一下:

 

一、事件驱动

    什么叫做事件驱动?狐表中所有对象都有不同的事件,我们编程就是为不同的事件编写代码,以响应事件的发生,达到我们的编程目的。

    在编写事件驱动的代码时,大家要注意一个原则,就是在事件处理的代码中不应该有触发该事件的代码

怎么理解呢?下面举一个例子:

    论坛上有一个帖子是关于模式窗口的,楼主的本意是,在窗口退出时,提示用户是否退出,如果是,就退出项目,如果否就返回窗口。为达到目的,楼主在窗口的beforeclose事件中写了如下的代码:

    If MessageBox.Show("退出吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = 6
        Syscmd.Project.Exit()
        Return
    Else
        e.Cancel = True
    End If

 表面上看,这段代码时没有问题的,但实际上执行时就会发现:当你点是的时候,程序陷入了死循环状态

 为什么呢?

     原因就是,这段代码本身是处理beforeclose事件的,而执行这段代码的时候,窗口还没有关闭,因此,

当   Syscmd.Project.Exit()执行的时候,又会引发另一个beforeclose事件,所以就陷入了死循环当中。

正确的写法应该是这样:

在beforeclose事件中写:

    If MessageBox.Show("退出吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.no \'当用户点击否的时候
        e.Cancel = True   \'返回窗口
    End If

在afterclose事件中写:

Syscmd.Project.Exit()

 

这样就不会发生错误了。

 

 

 

(未完待续)

 


 


 

   


--  作者:狐狸爸爸
--  发布时间:2012/12/21 11:20:00
--  

呵呵,先给精华,再等后续篇章

 

 


--  作者:lin_hailun
--  发布时间:2012/12/21 11:50:00
--  
 期待楼主写学习心得。
--  作者:blackzhu
--  发布时间:2012/12/21 13:22:00
--  
    老大 这个退出事件 我以前也纠结过.以前还跟人讨论过,也是范了同样的错误.这个范例老大应该写入帮助的.

小鱼儿(费舍尔,因为NBA的一个大牌球员叫老鱼,英文名叫费舍尔,所以呵呵!)写了20多年的代码,经验无可比拟.因为小鱼儿已经和一些狐友成立一个工作室(我也参与在内),专门做狐表的项目支持,技术支持,模块支持,教学支持的一些具体工作,所以会写一些专门的文章来提高知名度.望各位老大支持下.

  有项目需求(不管是项目的,模块的,技术的)可以加入能量软件工作室客户群  群号:114738135   非诚勿扰. 声明一点,需要收费,费用群内谈.

--  作者:万通
--  发布时间:2012/12/21 14:23:00
--  
以下是引用blackzhu在2012-12-21 13:22:00的发言:
    老大 这个退出事件 我以前也纠结过.以前还跟人讨论过,也是范了同样的错误.这个范例老大应该写入帮助的.

小鱼儿(费舍尔,因为NBA的一个大牌球员叫老鱼,英文名叫费舍尔,所以呵呵!)写了20多年的代码,经验无可比拟.因为小鱼儿已经和一些狐友成立一个工作室(我也参与在内),专门做狐表的项目支持,技术支持,模块支持,教学支持的一些具体工作,所以会写一些专门的文章来提高知名度.望各位老大支持下.
20多年的代码经验,看来牛人一个啊!呵呵。图片点击可在新窗口打开查看

--  作者:菲舍尔
--  发布时间:2012/12/21 15:57:00
--  
多谢各位老大的打赏,我会更有动力完成这篇文章的图片点击可在新窗口打开查看
--  作者:mam0094
--  发布时间:2012/12/21 16:52:00
--  
以下是引用blackzhu在2012-12-21 13:22:00的发言:
    老大 这个退出事件 我以前也纠结过.以前还跟人讨论过,也是范了同样的错误.这个范例老大应该写入帮助的.

小鱼儿(费舍尔,因为NBA的一个大牌球员叫老鱼,英文名叫费舍尔,所以呵呵!)写了20多年的代码,经验无可比拟.因为小鱼儿已经和一些狐友成立一个工作室(我也参与在内),专门做狐表的项目支持,技术支持,模块支持,教学支持的一些具体工作,所以会写一些专门的文章来提高知名度.望各位老大支持下.

  有项目需求(不管是项目的,模块的,技术的)可以加入能量软件工作室客户群  群号:114738135   非诚勿扰. 声明一点,需要收费,费用群内谈.

 

完了,看来今后别想从你们嘴里抢食了,, 呵呵! 图片点击可在新窗口打开查看


--  作者:sunbrain
--  发布时间:2012/12/22 0:24:00
--  
支持
--  作者:temblar
--  发布时间:2013/1/4 15:52:00
--  

(未完待续)

继续等,楼主的这条经验已经应用,谢谢。