Foxtable(狐表)用户栏目专家坐堂 → 如何实时监控到变量发生了变化?


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

主题:如何实时监控到变量发生了变化?

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


加好友 发短信
等级:幼狐 帖子:52 积分:669 威望:0 精华:0 注册:2019/4/21 8:51:00
如何实时监控到变量发生了变化?  发帖心情 Post By:2025/4/5 9:01:00 [只看该作者]

foxtable中如何对全局变量实现监控?即当这个变量发生变化了,就执行某个操作比如点击btn1。因为变量可能会在很多场合下发生变化,所以如果按照通常的方法,每次发生变化时,手动编程,对它进行判断是否改变,一是可能会造成代码太冗余,二是可能有时因为粗心忘了进行变量变化的判断,而导致某些功能无法正常执行。有什么好办法吗?

网上找到一个办法:把这个变量放到表的字段中,然后利用datacolChanged来实现对它的监控,但这样的话,每次使用这个变量,都要进行一次定义,如: dim tid as integer = tables("varstable").rows(0)("tid"),失去了直接使用全局变量的原味,因本来就可以在任意场合直接使用这个全局代码 tid 的

那么,如何可以在全局代码中, 通过属性(Property)包装私有变量,在属性的 Set 部分触发事件或操作呢? 

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


加好友 发短信
等级:幼狐 帖子:52 积分:669 威望:0 精华:0 注册:2019/4/21 8:51:00
  发帖心情 Post By:2025/4/5 9:13:00 [只看该作者]

找到办法了,并验证可行:

在全局代码中定义一个变量:
Private _myVar As Object  ' 私有变量
' 定义属性
Public Property myVar() As Object
    Get
        Return _myVar
    End Get
    Set(value As Object)
        If Not Equals(_myVar, value) Then  ' 检查值是否变化
            _myVar = value
            ' 变量变化时触发操作(例如点击btn1)
            ' btn1_Click()  ' 直接调用按钮事件
            MessageBox.Show("变量发生了变化了:" & _myVar)
            ' 或者触发自定义事件
        End If
    End Set
End Property

 回到顶部