为什么我在滚动条事件中获取异常索引超出范围

本文关键字:索引 异常 范围 获取 滚动条 事件 为什么 | 更新日期: 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到11047list_of_histograms.Count = 1048)的元素。

显然你的直方图比文件少。这里的错误以及真正的修复取决于您的应用程序逻辑。