How can I programmatically select multiple choices from a uilistbox?

I have an App Designer app containing a uilistbox that has both the 'Items' and 'ItemsData' properties specifed.
When my users close the app, I use setpref() to keep a persistent record of which values were selected in the uilistbox.
% Save user preferences
setpref('dddPrefs', 'ReportHeaderFields', app.ReportHeaderListBox.Value);
in the startupFcn method of the app, I use getpref() to grab the values that were previously selected in the uilistbox. The preferences aspect works fine. I can display the selected values in a message box, for example.
However, when I try to use the persistent preference value to reselect the appropriate items from the ullistbox, I cannot select more than one programatically. If I only select one value from the uilistbox and restart the program, that same value is indeed selected when I reopen. However, if I select multiple options and restart the program, the uilistbox appears to have no items selected.
% Read in preferences
app.ReportHeaderListBox.Value = getpref('dddPrefs', 'ReportHeaderFields');

3 个评论

Joseph - when you select more than one item in your list box and save that to your preferences, what is the value of
getpref('dddPrefs', 'ReportHeaderFields')
when you assign it to the value property of the list box? Is it a cell array? Does it have all of the items that you have selected?
Geoff,
I ran my app and selected manually from the GUI five items within the uilistbox. I then closed my app and in the command window, I ran the following command, which gives me a 1x5 cell array.
getpref.PNG
Just wanted to say that I also have this issue. It tried the following code to incrementally select the items one-by-one, and it doesn't work. If I add a breakpoint and step through the code, it works just fine. Also, if I attempt to multi-select programmatically (which doesn't select anything), it then prevents me from subsequently multi-selecting via the GUI (shift+select).
for i = 1:length(perferenceVal)
app.ListBox.Value{end+1} = perferenceVal{i};
drawnow;
end

请先登录,再进行评论。

 采纳的回答

It looks like whatever this issue was, it is no longer an issue in R2019b.

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Develop Apps Using App Designer 的更多信息

产品

版本

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by