【问题标题】:Error in ListView: InvalidArgument = Value of '0' is not valid for 'index'ListView 中的错误:InvalidArgument =“0”的值对“索引”无效
【发布时间】:2014-04-14 01:19:04
【问题描述】:

当我第二次在 ListView 中选择某个项目时出现此错误。我尝试调试它,当我第二次选择某个项目时,list_answers.SelectedItems.Count 为 0。为什么? 这是我的代码:

private void list_answers_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListViewItem t = list_answers.SelectedItems[0];
            for (int i = 0; i < tasks.Count; i++)
            {
                if (t.Text == "Question №" + (i + 1))
                {
                    this.ShowOnePanel(i);
                    iter = i;
                    break;
                }
            }
        }

【问题讨论】:

  • 没有。我的项目由文本和图像组成。首先,图像被设置为空。当我对某个问题给出正确答案时,我会为该项目(问题)设置一个图像以将其标记为正确

标签: c# winforms listview


【解决方案1】:

更改选择时,ListView 将首先取消选择当前行,然后选择新行,因此您将调用 SelectedItems 为空。

你可以通过添加来解决它

if(list_answers.SelectedIndex == -1)
    return;

or

if(list_answers.SelectedItems.Count == 0)
    return;

【讨论】:

  • ty,它有帮助。我还有一个问题:我有一个功能,当显示一些问题时,ListView 是否选择了这个问题。它适用于 ListBox,但不适用于 ListView。私人无效 SelectedQuestion(int number) { this.list_answers.Items[number].Selected = true; }
  • 确定没有选中?如果 ListView 失去焦点并且您没有突出显示该行,则在它重新获得焦点之前您不会看到该行被选中。另外,如果答案有效,请接受。
  • 如果我快速完成问题,我可以在 ListView 中看到正确的“问题”闪烁。但是为什么没有突出显示呢?
  • 因为您必须在 ListView 上明确设置 HideSelection = false ;)
【解决方案2】:

如果只是在listview_SelectedChangeIndex事件中添加这段代码,就可以解决问题了。

 if (finishListView.SelectedItems.Count > 0)
    {
// here your code goes
    }
    else
    {
    return;
    }

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多