【问题标题】:C# InvalidArgument=Value of '1' is not valid for 'index' [duplicate]C# InvalidArgument =“1”的值对“索引”无效 [重复]
【发布时间】:2017-03-19 21:03:44
【问题描述】:

我收到以下错误:

System.Windows.Forms.dll 中出现“System.ArgumentOutOfRangeException”类型的未处理异常

附加信息:InvalidArgument=“1”的值对“索引”无效

如下代码。

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# listbox


    【解决方案1】:

    更改您的 for 循环:

    旧:

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

    新:

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

    【讨论】:

      【解决方案2】:

      这一行是错误的:

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

      C# 中的数组索引为零,因此数组中的最后一个索引比计数小一。将其更改为:

      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);
           ....
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多