以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  文本框的焦点判断问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83698)

--  作者:凡夫俗子
--  发布时间:2016/4/14 18:33:00
--  文本框的焦点判断问题
我想在一个文本框的 ValueChanged 事件中实现 值有改变后 执行一些代码

If e.Sender.Focused Then
msgbox(1)
执行代码 ......

end if

就是想如果焦点在该文本框中时,值 改变才执行代码, 否则不执行代码

这样写为啥不起作用,无论怎么样 1 都不显示。
[此贴子已经被作者于2016/4/14 18:36:58编辑过]

--  作者:大红袍
--  发布时间:2016/4/14 19:14:00
--  
 你可以去编写 TextChanged 事件。
--  作者:凡夫俗子
--  发布时间:2016/6/21 15:21:00
--  
ValueChanged 为何不支持 焦点判断呢
 放在TextChanged 事件中 是有执行
要在ValueChanged 事件中才满足要求

就是要实现在文本框中手工输入值才执行相关代码,如果是非焦点单元格下面的变化就不执行代码

--  作者:大红袍
--  发布时间:2016/6/21 15:25:00
--  
在TextChanged事件也可以判断焦点是否在文本框里面啊。
--  作者:凡夫俗子
--  发布时间:2016/6/21 15:28:00
--  
这个是可以判断不错,问题是里面的字符每变化一个就执行一次 太频繁了
[此贴子已经被作者于2016/6/21 15:34:54编辑过]

--  作者:大红袍
--  发布时间:2016/6/21 15:31:00
--  

 那你可以在Enter事件记录一下

 

vars("焦点") = True

 

 然后在ValueChanged事件,判断和把值改成false


--  作者:凡夫俗子
--  发布时间:2016/6/21 15:42:00
--  
一个小的重要的基本功能判断需要在多处写代码,强烈要求官方优化一下程序
--  作者:大红袍
--  发布时间:2016/6/21 15:44:00
--  

 汗,ValueChanged就是焦点离开时触发的。

 

 你自己的需求有问题没理由要求人家改事件啊


--  作者:凡夫俗子
--  发布时间:2016/6/21 15:50:00
--  
以下是引用大红袍在2016/6/21 15:31:00的发言:

 那你可以在Enter事件记录一下

 

vars("焦点") = True

 

 然后在ValueChanged事件,判断和把值改成false


这样做有个问题不好处理:

操作可能是: 手动选择了该控件 Enter 执行了vars("焦点") = True 了,但用户没有任何操作就选择了其它的控件

这个时候通过代码修改了该控件的值 ,则ValueChanged判断为是 手工处理的了。

这就要再在另一个地方加代码了,在哪里加呢,在Leave中加是不行的,Leave事件发生在ValueChanged之前


另一种方法是在

TextChanged  事件中加代码

可以较好地解决,但理论上每录入一个字符就执行一次,貌似没更好的方法了





--  作者:凡夫俗子
--  发布时间:2016/6/21 15:51:00
--  
以下是引用大红袍在2016/6/21 15:44:00的发言:

 汗,ValueChanged就是焦点离开时触发的。

 

 你自己的需求有问题没理由要求人家改事件啊

焦点离开时触发是触发了,但不分时机的触发


问题是这个事件不能判断 该控件是否是焦点单元格了



[此贴子已经被作者于2016/6/21 15:51:43编辑过]