代码之家  ›  专栏  ›  技术社区  ›  Shika93

自动向下滚动列表框

  •  0
  • Shika93  · 技术社区  · 6 年前

    我使用的是Matlab R2018A,没有 scroll 功能。我只需要在添加项目时向下滚动列表框(动态)。

    我在谷歌上找到了这个解决方案,但不适合我。

    handles.slider.Max = length(handles.listbox.String);
    handles.slider.Value = handles.slider.Max;
    

    还有其他解决办法吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   zeeMonkeez    6 年前

    为了 ListboxTop 属性要产生效果,必须重新绘制UI(使用 drawnow )将项添加到列表框后。

    示例,使用带有一个标记为的列表框的指南 listbox1 :

    在图形用户界面中 OpeningFcn ,写入

    handles.t = timer('BusyMode', 'drop', 'ExecutionMode',...
    'fixedRate', 'StartDelay', 4, 'Period', 4.0, 'TimerFcn', {@addItem, hObject});
    handles.ctr = 0;
    handles.t.start();
    guidata(hObject, handles);
    

    最后,添加

    function addItem(hObject, EventData, parentO)
    
    handles = guidata(parentO);
    handles.ctr = handles.ctr + 1;
    handles.listbox1.String{end+1} = sprintf('Item %i', handles.ctr);
    drawnow
    handles.listbox1.ListboxTop = numel(handles.listbox1.String) ;
    guidata(parentO, handles);
    

    请注意,当取消注释 刷新屏幕 行,列表框将始终跳转到所选项目(默认为第一个)。