0

スクロールバーイベントに彼のコードがあります:

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ですか?

4

2 に答える 2

2

配列_fiには、より多くの項目が含まれている可能性がありますlist_of_histograms。エラーを回避するには、適切なリストに従って最大値を設定してください。

myTrackPanelss1.trackBar1.Maximum = list_of_histograms.Count - 1;
于 2013-07-10T07:06:59.543 に答える
0

0 から1047までの要素( ) を持つリストの1048要素 ( )を取得しようとしています。myTrackPanelss1.trackBar1.Value = 1048list_of_histograms.Count = 1048

どうやら、ファイルよりもヒストグラムが少ないようです。ここで何が問題なのか、実際の修正は、アプリケーション ロジックによって異なります。

于 2013-07-10T07:05:35.477 に答える