c# InvalidArgument=Value '对'索引'无效

本文关键字:索引 无效 InvalidArgument Value | 更新日期: 2023-09-27 18:16:28

我得到以下错误:

类型为"System"的未处理异常。在System.Windows.Forms.dll中发生了ArgumentOutOfRangeException

附加信息:InvalidArgument= '1'的值对'index'无效

用于下面的代码。

private void button_confirm_Click(object sender, EventArgs e)
    {
        listBox_savedata.Items.Add(textBox_ordertostart.Text +" "+ comboBox_suburb.SelectedItem.ToString() + " " + dateTimePicker2.Value.ToShortDateString());
     
        
            for (int i = 0; i <= listBox_savedata.Items.Count; i++)
            {
                string s1 = listBox_savedata.Items[i].ToString();
                int startpos = s1.IndexOf("PM");
                string sub = s1.Substring(0, 5);
                if(sub+" "+"PM"==DateTime.Now.ToString("HH:mm tt"))
                    { 
                    mplayer.PlayLooping();
                
            }
        }
    }

c# InvalidArgument=Value '对'索引'无效

更改for循环:

:

for (int i = 0; i <= listBox_savedata.Items.Count; i++) // <=
新:

for (int i = 0; i < listBox_savedata.Items.Count; i++) // <

这一行不对:

for (int i = 0; i <= listBox_savedata.Items.Count; i++)
c#中的

数组是零索引的,因此数组中的最后一个索引比计数少1。改为:

for (int i = 0; i < listBox_savedata.Items.Count; i++)

一切都会好起来的。

或者使用foreach循环:

foreach (var item in listBox.savedata.Items)
{
     int startpos = item.IndexOf("PM");
     string sub = item.Substring(0, 5);
     ....
}