首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SelectedItems.Count的listview中的VirtualMode异常

使用SelectedItems.Count的listview中的VirtualMode异常
EN

Stack Overflow用户
提问于 2021-08-26 15:29:32
回答 1查看 101关注 0票数 0

在从listview中选择一个值并单击my按钮后,我想将我的值输入到代码中,但是我的代码抛出了这个异常:

Count = 'this.listView1.SelectedItems.Count‘抛出了'System.InvalidOperationException’类型的一个例外

代码语言:javascript
复制
private void OK_button_Click(object sender, EventArgs e)
    {
      try
      {
        // OK -> Daten übernehmen
        ListView.SelectedListViewItemCollection data = this.listView1.SelectedItems;

        int iCount = data.Count;
        if (iCount != 1)
        {
          MessageBox.Show("Value is empty");
          return;
        }
        DialogResult = DialogResult.OK;
        Close();
      }
      catch (Exception ex)
      {
        //WriteProtokoll(ex.ToString(), 0);   
        Close();
      }
    }
  } 
代码语言:javascript
复制
 private void listView1_SearchForVirtualItem(object sender, SearchForVirtualItemEventArgs e)
    {
      e.Index = Array.FindIndex(myData, s => s == textBox1.Text.ToString());
    }

    private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
    {

      e.Item = new ListViewItem(myData[e.ItemIndex]);
     
    }
代码语言:javascript
复制
    myData = new string[dataListSize];
      for (int i = 0; i < dataListSize; i++)
      {
        myData[i] = String.Format("{0}", i);
      }


 private void textBox1_TextChanged(object sender, EventArgs e)
    {

      String MyString = textBox1.Text.ToString();  

      ListViewItem lvi = listView1.FindItemWithText(MyString.TrimEnd());
      //Select the item found and scroll it into view.
      if (lvi != null)
      {
        listView1.SelectedIndices.Clear();
        listView1.SelectedIndices.Add(lvi.Index);
        listView1.EnsureVisible(lvi.Index);

      }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-26 15:41:51

这是您使用VirutalMode时的设计。文档指出:

在虚拟模式下,项集合将被禁用。试图访问它会导致InvalidOperationException。同样适用于 CheckedItems集合和 SelectedItems集合

我们可以在源代码中确认这一点。

它还提供了以下建议:

如果要检索选定的或选中的项,请改用SelectedIndices和CheckedIndices集合。

因此,您应该使用this.listView1.SelectedIndices.Count

再次查看源代码,我们可以看到这不会引发异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68941394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档