c# - 如何修复错误'InvalidArgument ='7'的值对'index'无效
问题描述
如果循环找到将触发事件的字符串,我将列表视图设置为背景颜色格式。
我已经将该函数困在 if else 语句中,但错误仍然存在。
foreach (ListViewItem li in listView1.Items)
{
for (int i = 0; i < listView1.Columns.Count; i++)
{
if (li.SubItems[i].Text.ToString() == "Pending")
{
li.BackColor = Color.Turquoise;
li.ForeColor = Color.White;
}
else if (li.SubItems[i].Text.ToString() == "Paid")
{
li.BackColor = Color.Green;
li.ForeColor = Color.White;
}
else if (li.SubItems[i].Text.ToString() == "Over Due")
{
li.BackColor = Color.Red;
li.ForeColor = Color.White;
}
}
}
这是我遇到的错误。'InvalidArgument='7' 的值对'index' 无效
解决方案
问题出在您的内部 for 循环中,您正在迭代listView1.Columns
而不是itemRow.SubItems
你应该更新你的 for 循环,比如
foreach (ListViewItem li in listView1.Items)
{
for (int i = 0; i < listView1.SubItems.Count; i++)
{ //^^^^^^^^ this is what you need to change
//Your code goes here
}
}
或者你可以使用 foreach 循环,
foreach (ListViewItem li in listView1.Items)
{
foreach (var subItem in li.SubItems)
{
if (subItem.Text.ToString() == "Pending") {
li.BackColor = Color.Turquoise;
}
else if (subItem.Text.ToString() == "Paid") {
li.BackColor = Color.Green;
}
else if (subItem.Text.ToString() == "Over Due") {
li.BackColor = Color.Red;
}
}
li.ForeColor = Color.White;
}
您的代码给出错误可能是因为
listView1.Columns.Count
更大listView1.SubItems.Count
奖励: 在所有条件下li.ForeColor = Color.White;
都相同,您可以在 if..else 阶梯之外编写它,而不是在每个条件中编写它。请检查我更新的代码 if..else
推荐阅读
- python - Pandas 中的累计和
- python - 如何将两个列表中的元素交替附加到一个?
- angular - 如何将 URL 路径参数传递给 coreUI/angular 侧边栏中的导航项
- android - Android Parse Exception 有时会发生
- python-3.5 - 我不能在 python 中使用长函数
- wordpress - 自动填充本地取件的运输字段
- python-3.x - Django 静态文件图像转换为模板 404 错误
- apache-spark - 如何在 Databricks 中显示所有数据库中的所有表
- c++ - 否则,如果在针对数组中的两个以上参数进行测试时条件失败
- laravel - 将 API 数据异步传递给视图的方式?