为什么我在滚动条事件中获取异常索引超出范围
本文关键字:索引 异常 范围 获取 滚动条 事件 为什么 | 更新日期: 2023-09-27 18:21:50
我在滚动条事件中有他的代码:
if (_fi.Length > 0)
{
myTrackPanelss1.trackBar1.Minimum = 0;
myTrackPanelss1.trackBar1.Maximum = _fi.Length - 1;
tt = list_of_histograms[myTrackPanelss1.trackBar1.Value];
HistogramGraphs1.DrawHistogram(tt);
long res = GetTopLumAmount(tt, 1000);
long max = GetHistogramMaximum(tt);
GetHistogramAverage(tt);
setpicture(myTrackPanelss1.trackBar1.Value);
this.pictureBox1.Refresh();
}
定义了以下变量:
_fi = FileInfo[]
tt = long[]
list_of_histograms = List<long[]>
当我把条移到右边的末尾时,它就到了第1047帧,然后抛出异常。当抛出异常时,我看到:
_fi.Length = 1049
(-1所以它的1048)所以如果它从0开始它类似于0到1047)
list_of_histograms.Count = 1048
myTrackPanelss1.trackBar1.Value = 1048
我知道这个异常意味着什么,问题是如果我做_fi.Length - 1
作为长度,为什么会发生这种情况?
数组_fi
可能包含比list_of_histograms
更多的项。为了避免错误,只需根据正确的列表设置最大值:
myTrackPanelss1.trackBar1.Maximum = list_of_histograms.Count - 1;
您正在尝试获取一个列表的1048元素(myTrackPanelss1.trackBar1.Value = 1048
),该列表包含从0到11047(list_of_histograms.Count = 1048
)的元素。
显然你的直方图比文件少。这里的错误以及真正的修复取决于您的应用程序逻辑。