EDA365电子论坛网

标题: Matlab app开发中EditField控件通过ValueChanging回调改变控件值得问题 [打印本页]

作者: unfaithful2021    时间: 2023-1-6 11:04
标题: Matlab app开发中EditField控件通过ValueChanging回调改变控件值得问题
如题,对EditField控件,改变控件的Value值(通过编程改变),一直没搞明白。我做了测试,单独搞了一个EditField控件,操作发现结果如下:1、首先,我用的是ValueChanging回调,因为项目中,我想在回调中,控制控件内值的值域,测试代码如下7 D7 z) {# P4 i0 X

$ W  ]: V* {+ J5 N复制代码# M1 |+ q. k& c* s0 p, t
如上代码,也就是说,每次我在EditField控件内通过键盘输入字符时,无论输入的是什么,应该都会变成字符‘10’
4 K( X9 Z, y" u$ R$ Z9 e  \但是实测的时候发现2 v5 I; B6 J" G
第一次通过键盘输入字符,确实会变成字符'10',但是如果继续输入,比如我继续输入‘1’,那么久变成‘10111...’。难道不应该每次输入都变成'10'吗,回调通过打印内容,确认进去回掉了,也就是说app.EditField.Value = '10';这个赋值没有成功。# q  X" c! ^6 n/ t- l; X

- h' x2 L2 Z% j, A4 p
! B' i% v; c7 Q9 o8 I( m8 D, u. T* P% t2 r! o
另外,如果我的鼠标从EditField框释放出来,然后再点击进去,这时候,如果输入字符,第一次也可以变成'10',也就是赋值成功。为什么赋值会不成功呢?! k2 L) {3 I! g% e+ K& @: E
/ u; Y' K8 Z2 [* n8 G7 Z  T% u
我又做了测试,建了两个EditField控件,比如A和B,我再A的ValueChanging回调中,去给B的Value赋值,每次都是可以赋值成功的。大佬们指点一下吧。help里面说的也不清楚...
) }8 U1 U' K; Z: J% Z3 d% Q
作者: whatever_    时间: 2023-1-6 13:10
用这个ValueChanged回调,这个才是输入结束后的回调。(ValueChanging是输入进行时的回调)
作者: duhe3hfu    时间: 2023-1-6 13:21
底层的逻辑应该是ing回调中会记录上一次点击的值,所以你赋值的值才会不断被覆盖,也就是value值在ing value后,ing中自身赋值无效化。除非你自己造轮子,要不然一个函数做不到。你可以建立一个侦听事件试一下
/ c5 m- I$ g+ H% j5 h9 Y
作者: peerless2021    时间: 2023-1-6 13:34
输入时判断控制没有办法,只能结束判断时了,结束时判断位数,多余就取8位,判断字符使用hex2dec,配合try catch 使用,报错就是不是十六进制数




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2