LABEL changed事件问题大家好,我定义了一个结构体,他有4个元素分别是label1-label4,通过DDE和其他应用程序
LABEL changed事件问题
大家好,我定义了一个结构体,他有4个元素分别是label1-label4,通过DDE和其他应用程序数据交换
我想通过这4个label任意一个值改变来触发另一个事件,我的代码是这样写的
VB codePublic Function BackStateChange() As BooleanIf (Form1.Label12.DataChanged = ture Or Form1.Label13.DataChanged = True Or Form1.Label14.DataChanged = ture Or Form1.Label15.DataChanged = ture) ThenBackStateChange = TrueElseBackStateChange = FalseEnd IfEnd Function
我查看MSDN,不太能理解
Changed 属性
返回或设置一个数值,它指示某个属性页上的属性值已经变更。在属性页创建时,Changed 属性不可用,在属性页运行时,该属性可读可写。
语法
object.Changed [= boolean]
Changed 属性的语法包含下面部分:
部分 描述
object 对象表达式,其值为“应用于”列表中的对象。
boolean 布尔值,它判断属性页上的某个属性是否已经变更,并使属性页被重写。
设置值
boolean 的设置值为:
设置值 描述
True 属性页已经被重写,因为页上的某个属性已被变更。
False 属性页未被重写,页上的属性都未变更。
[解决办法]datachanged属性..看看他应用于...都是关于数据绑定的:
DataChanged 属性
返回或设置一个值,它指出被绑定的控件中的数据已被某进程改变,这个进程不是从当前记录中检索数据的进程。该在设计时不可用。
和你理解的不一样.
你程序里面是datachanged,后面又是changed...
如果你是自己改变label的captoin,有要监视他,在改变的地方监视,或者在changed事件里监视.
Private Sub Label1_Change()
Label1Chaned = True
End Sub
[解决办法]楼上的方法有问题
如果第一次改变后label1chaned值会一直都是true,后面不改变值也是true所以有bug
应该设置一个全局的 BackStateChange As Boolean
然后在
Private Sub Label1_Change()
BackStateChange = True
End Sub
然后再另一个检测BackStateChange的方法中用过后将BackStateChange 设置为false
比如
sub combo1_click()
if BackStateChange true then
.....
BackStateChange false
end if
end sub