Foxtable(狐表)用户栏目专家坐堂 → [分享]关于狐表编程的一点心得


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

主题:[分享]关于狐表编程的一点心得

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


加好友 发短信
等级:二尾狐 帖子:504 积分:3492 威望:0 精华:3 注册:2012/11/13 15:49:00
[分享]关于狐表编程的一点心得  发帖心情 Post By: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()

 

这样就不会发生错误了。

 

 

 

(未完待续)

 


 


 

   


[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
菲舍尔
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:504 积分:3492 威望:0 精华:3 注册:2012/11/13 15:49:00
  发帖心情 Post By:2012/12/21 15:57:00 [显示全部帖子]

多谢各位老大的打赏,我会更有动力完成这篇文章的图片点击可在新窗口打开查看

 回到顶部