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
% Value changing function: EditField
function EditFieldValueChanging(app, event)
changingValue = event.Value;
fprintf('VlaueChanging-Working!\n');
app.EditField.Value = '10';
end
4 M& P5 y6 F- h- J/ \
$ 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( m
8 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