使用多个元素共享一个回调,并在回调中分别传递数

2次观看(过去30天)
马库斯
马库斯 2021年6月14日
评论: 马库斯2021年6月15日
嗨,大家好,
是否有一种方法可以通过系统名称(例如Dropdown_ydata1,Dropdown_ydata2,Dropdown_ydata3)引用多个元素,以相同的函数到一个回调,然后读取数字(1,2或3)并将此号码传递给以下代码?
%例如:
%通过app共享变量:y1, y2, y3
%VAILOCHANGED功能:DROPWDOWN_YDATA1,DROPWDOWN_YDATA2,DROWWDOWN_YDATA3
%% read number(1…)3)并将其保存为“i”(我有一个想法去读取标签的
%应用程序,然后用Regexp获取数字)
source = event.source.tag;
i = regexp(源,“\ d +”'比赛'
X =......%不重要
%%在以下代码中写下数字(i)
%我不确定如何执行此操作,因为我读取动态更改的变量是“错误”。
%可能以字符串/矩阵存储它们 - 我不知道
y = app.y(i)。(app.dropwdown_ydata(i).value);
绘图(app.uiaduiaxes,x,y);
这将节省我大量的代码,因为我有多个元素(40到50)与完全相同的回调。唯一改变的部分是元素的名称(例如app.name(x))。我开始工作matlab只是几个星期前,所以请原谅我一些明显的错误。
编辑15.06.21:
我找到了一种方法,也许你们中有人能告诉我这是一个好主意还是只是混合了“错误的”东西。我愿意采用一种更好/更快的方法。
%通过app共享变量:y1, y2, y3
%VAILOCHANGED功能:DROPWDOWN_YDATA1,DROPWDOWN_YDATA2,DROWWDOWN_YDATA3
source = event.source.tag;%获取源的标记
i = regexp(源,“\ d +”'比赛');%获取标记的次数(输出单元格数组)
我= str2double(i);%输出一个数字
y = app。(sprintf('y%d',i))。(应用程序。(Sprintf(Sprintf('dropwdown_ydata%d',i))。价值);%设置应用程序的名称(例如app.y1。(app.dropwdown_ydata1.value));
情节(应用程序。UIAxes y);
Sprintf-inth的代码有点凌乱,但如上所述,它为我节省了一吨代码。

接受答案

穆罕默德萨米
穆罕默德萨米 2021年6月15日
是的,你可以给多个对象分配相同的回调。上面你分享的代码是好的。
但是,您可以直接访问下拉目的值,因为它在事件对象内传递给您。
此外,如果您将变量y作为结构数组,您不需要使用Sprintf。
source = event.source.tag;%获取源的标记
i = regexp(源,“\ d +”'比赛');%获取标记的次数(输出单元格数组)
我= str2double(i);%输出一个数字
y = app.y(i)。(event.value);%设置应用程序的名称(例如app.y(1).(app. dropdown_ydata1 . value));
情节(应用程序。UIAxes y);

更多答案(0)

下载188bet金宝搏


释放

R2020B.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!