以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何实时监控到变量发生了变化? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196172) |
-- 作者:百事可乐 -- 发布时间:2025/4/5 9:01:00 -- 如何实时监控到变量发生了变化? foxtable中如何对全局变量实现监控?即当这个变量发生变化了,就执行某个操作比如点击btn1。因为变量可能会在很多场合下发生变化,所以如果按照通常的方法,每次发生变化时,手动编程,对它进行判断是否改变,一是可能会造成代码太冗余,二是可能有时因为粗心忘了进行变量变化的判断,而导致某些功能无法正常执行。有什么好办法吗? 网上找到一个办法:把这个变量放到表的字段中,然后利用datacolChanged来实现对它的监控,但这样的话,每次使用这个变量,都要进行一次定义,如: dim tid as integer = tables("varstable").rows(0)("tid"),失去了直接使用全局变量的原味,因本来就可以在任意场合直接使用这个全局代码 tid 的 那么,如何可以在全局代码中, 通过属性(Property)包装私有变量,在属性的 Set 部分触发事件或操作呢?
|
-- 作者:百事可乐 -- 发布时间: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 |