發生問題:
刪除listbox的最後一行後,listbox會消失,並在Command Windows 上顯示" Warning: single-selection listbox control requires that Value be an integer
within String range
Control will not be rendered until all of its parameter values are valid "
within String range
Control will not be rendered until all of its parameter values are valid "
如下圖所示
原因:
Listbox 中兩個重要的屬性 String 與 Value ,在刪減資料後,我們會重新set資料到listbox中的string,不過通常都忘記value也跟著設定,預設是不會改的,但刪除的是最後一行資料列時,指標還是指向最後一行,但資料早已不在,所以就無法顯示資料,
舉例來說
以下是我的listbox的資料與index
string={1,2,3,4,5}
value=5;
1
2
3
4
5<---
但我刪除第五筆資料時
1
2
3
4
<-----????
刪除後指標還是標記第五個,但是資料消失了,所以會出錯。
解決方法:
if val==1
set(h_lst2,'Strin',str,'value',1);
else
set(h_lst2,'Strin',str,'value',val-1);
end
在刪除資料後set時,把val設定成val-1,用例子表示的話,就是從原本的5只到4,這樣還是在目前listbox中的最後一個值,所以可以正常顯示。
正常啦,網路上寫得太複雜,有的說就選擇此新矩陣大小的長度,非常複雜~