以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  NumericComboBox的Leave事件的一个问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=107246)

--  作者:andy-1024
--  发布时间:2017/9/24 4:09:00
--  NumericComboBox的Leave事件的一个问题
请问老师:
由于NumericComboBox控件的e参数没有NewValue和OldValue属性,我自己写了一段代码用于判断数值是否变化,如果数值变化了,有一个按钮可用,如果数值没有变化,按钮不可用。
我是在Leave事件中加入的代码:

Dim Old As WinForm.Label = e.Form.Controls("LOld")         \'定义一个Label用于存储旧值,并且Old在此控件的Enter事件中被赋予旧值
Dim NmRPrice As WinForm.NumericComboBox = e.Form.Controls("NmRPrice")        \'定义NumericComboBox控件
Dim btnOK As WinForm.Button = e.Form.Controls("btnok")             \'定义需要根据数值变化而变化状态的按钮
MessageBox.Show(e.Sender.Value)                   \'过程中临时输出数值,用于检查代码
If old.Text <> CStr(NmRPrice.Value) Then
    btnOK.Enabled = True
End If

保存完,打开窗口后,控件中初始值自动载入,比如为20,我将鼠标点入此控件,Old显示20,没有问题,
我重新设置数值为30,然后离开控件,此时弹出的MessageBox中显示,值还是20.
Leave事件不是在离开控件之后执行吗?如果离开控件了的话,值不是应该已经变为30了吗?
这是怎么回事呢?
谢谢老师!

--  作者:有点甜
--  发布时间:2017/9/24 22:38:00
--  

enter事件给label赋值存放旧值;

 

level事件对比两个值,执行你的操作。


--  作者:andy-1024
--  发布时间:2017/9/25 4:25:00
--  回复:(有点甜)enter事件给label赋值存放旧值;&n...
是啊,老师,我就是这么做的呀,但是为什么离开控件后,控件的值还是改动之前的呢?

--  作者:andy-1024
--  发布时间:2017/9/25 4:34:00
--  

脱离开我开发的程序,我新建了一个测试窗口,如下图,初始值设为21,鼠标进入控件,改为22,离开控件后,输出控件内容,还是21,咋回事呢?


图片点击可在新窗口打开查看此主题相关图片如下:error.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2017/9/25 8:53:00
--  
e.Sender.Value 改成 e.Sender.Text