我正在尝试创建一个列表框,我可以在其中动态添加或删除项。
设置如下所示:
不幸的是-从图片中可以看到-当我删除元素时,列表的总长度保持不变,而不是缩小列表,现在显示的列表包含空洞。
有谁知道如何避免这种行为?
到目前为止,这是我的删除按钮代码:
function btnDeleteLabel_Callback(hObject, eventdata, handles)
selectedId = get(handles.listbox_labels, 'Value'); % get id of selectedLabelName
existingItems = get(handles.listbox_labels, 'String'); % get current listbox list
existingItems{selectedId} = []; % delete the id
set(handles.listbox_labels, 'String', existingItems); % restore cropped version of label list
2条答案
按热度按时间mzsu5hc01#
删除“空”条目的最简单方法是用剩余的条目更新
listbox
字符串。有三种可能性:
upd_list={existingItems{2:end}}
upd_list={existingItems{1:end-1}}
upd_list={existingItems{1:selectedId-1} existingItems{selectedId+1:end}}
您还可以检查列表的所有元素是否已被删除,在本例中,禁用“Delete”
pushbutton
;在本例中,您必须在“Add”callback
中启用它。您的
btnDeleteLabel_Callback
的可能实施可能是:tjvv9vkg2#
只需将单元格方括号替换为普通方括号: