C# 如何检查listView项是否包含FileInfo变量?

C# 如何检查listView项是否包含FileInfo变量?,c#,.net,winforms,C#,.net,Winforms,错误发生在: FileInfo fi = new FileInfo(files[i]); if (listView1.Items.Contains(fi.FullName)) 错误2参数1:无法从“字符串”转换为“System.Windows.Forms.ListViewItem” 及 错误1“System.Windows.Forms.ListView.ListViewItemCollection.Contains(System.Windows.Forms.ListViewItem)”的最佳重

错误发生在:

FileInfo fi = new FileInfo(files[i]);
if (listView1.Items.Contains(fi.FullName))
错误2参数1:无法从“字符串”转换为“System.Windows.Forms.ListViewItem”

错误1“System.Windows.Forms.ListView.ListViewItemCollection.Contains(System.Windows.Forms.ListViewItem)”的最佳重载方法匹配具有一些无效参数

在我的代码底部,我有这样一句话:

listView1.Items.Contains(fi.FullName)
private void按钮5_单击(对象发送者,事件参数e)
{
如果(button5.Text==“取消选择所有项目”)
{
对于(int i=0;i
但是listView1在使用listBox之前没有选择属性SetSelected,但是现在我正在使用listView,有什么方法可以克服它吗?

试试这个:

private void button5_Click(object sender, EventArgs e)
        {
            if (button5.Text == "Unselect All Items")
            {
                for (int i = 0; i < listView1.Items.Count; i++)
                {
                    listView1.SetSelected(i, false);
                }
                button5.Text = "Select All Items";
            }
            else
            {
                if (listView1.Items.Count == 0)
                {
                }
                else
                {
                    for (int i = 0; i < listView1.Items.Count; i++)
                    {
                        listView1.SetSelected(i, true);
                    }
                    button5.Text = "Unselect All Items";
                }
            }
        }
if(listView1.Items.Cast().Any(item=>item.Text==fi.FullName))
{
//随便你
}
试试这个:

private void button5_Click(object sender, EventArgs e)
        {
            if (button5.Text == "Unselect All Items")
            {
                for (int i = 0; i < listView1.Items.Count; i++)
                {
                    listView1.SetSelected(i, false);
                }
                button5.Text = "Select All Items";
            }
            else
            {
                if (listView1.Items.Count == 0)
                {
                }
                else
                {
                    for (int i = 0; i < listView1.Items.Count; i++)
                    {
                        listView1.SetSelected(i, true);
                    }
                    button5.Text = "Unselect All Items";
                }
            }
        }
if(listView1.Items.Cast().Any(item=>item.Text==fi.FullName))
{
//随便你
}

您需要在这里使用linq查询:listView1.Items.Where(x=>x.Fullname==fi.Fullname);将x.FullName更改为要比较的任何属性。您可以对返回值进行null检查,甚至可以执行linq.ANy来返回bool。您需要在此处使用linq查询:listView1.Items.Where(x=>x.Fullname==fi.Fullname);将x.FullName更改为要比较的任何属性。您可以对返回值进行null检查,甚至可以执行linq.ANy来返回bool。