我正在使用此命令创建一个uicontrol对象
h = uicontrol('style','listbox','max',10,'min',1,'Position',[200 200 200 200],'string',sheets,'Callback',@listbox1_Callback);
它返回h的随机双精度值(0.017,0.035等),因此在执行回调时会产生错误,因为没有创建对象句柄。
完整代码
FileName = uigetfile('*.xlsx','Select the data file',filepath);
[status,sheets,xlFormat] = xlsfinfo(FileName)
h = uicontrol('style','listbox','max',10,'min',1,'Position',[200 200 200 200],'string',sheets,'Callback',@listbox1_Callback);
答案 0 :(得分:1)
这是不同Matlab版本的行为。要获得uicontrol的属性,无论h是double还是handle,都可以使用:
str = get(h, 'String'); % work for all versions
后来Matlab支持更方便的方法:
str = h.String; % only supported for later versions where h is handle
如果您希望在早期版本中使用后一种语法,则可以执行以下操作:
h = handle(h); % convert double to handle for earlier matlab
然后你可以像以后的matlab一样做。如果您担心不同版本的兼容性,上面的命令会对以后的matlab版本造成伤害。