在ListView中搜索ListViewItem

时间:2017-08-18 20:55:21

标签: c# listview listviewitem

所以我修改了我的代码以及我正在寻找的内容: 我创建了一个锯齿状的数组:

object[][] arr1 = new object[2][];

我按以下方式将ListViewItems添加到数组arr1 [1]:

ListViewItems x = new ListViewItems(y);
arr1[1][0]= x;

然后我需要检查项目x是否存在于数组

if ((arr1[1].Contains(x)))
        {MessageBox.Show("Exists")}

现在的问题是它总是假的。  在数组中,值为:

arr1 [0] [0] {文字="值1"}

x值完全相同

{Text = "value1"}

所以我现在不知道为什么当我做一个Contains()时它仍然是假的,假设arr1 [1]里面有大约20个项目

if ((arr1[1].Contains(x)))
    {MessageBox.Show("Exists")}

1 个答案:

答案 0 :(得分:0)

首先,我猜你的arr实际上是一个列表或IEnumerable。

所以你应该这样做,

if(arr.Contains(n))
{
    MessageBox.Show("Exists");
}

因为Contains()检查集合是否包含

如果你想实际比较第零项;

if (arr[0] == n)
{
    MessageBox.Show("EXISTS");
}

编辑:根据OP的更新代码/要求进行了更新。

首先,您要创建的是 NOT 二维数组,但是数组数组。您的arr有两个元素,每个元素都是另一个对象数组。因此,arr1[1][0]= x;分配不起作用。您需要做的是为第一个数组中的每个元素分配一个数组。像这样:

object[][] arr1 = new object[2][];
arr1[0] = new object[1];
arr1[1] = new object[1];

现在您可以将x设置为该数组,如下所示:

arr1[1][0] = x;

其次,您的代码示例仍然无效。所以我很惊讶您甚至声称您的代码总是处于错误状态,因为它应该抛出异常,因为实际情况是arr1[1]条件中的ifnull。 此外,没有ListViewItems类,它是ListViewItem类。我们也不知道初始化中y是什么。因此,请了解如何发布Minimal, Complete, and Verifiable example

由于我不知道y是什么,我使用了一个字符串,现在它可以正常工作。

object[][] arr1 = new object[2][];
arr1[0] = new object[1];
arr1[1] = new object[1];

ListViewItem x = new ListViewItem("value");
arr1[1][0] = x;

if (arr1[1].Contains(x))
    textBox1.Text = "FOUND";
else
    textBox1.Text = "NOT FOUND";