如何在比较某些字符串后检查 listView 项目?

发布于 2024-12-03 03:48:50 字数 910 浏览 1 评论 0原文

谁能帮我解决一下我的小烦恼吗? 我正在编写一个应用程序来处理文本文件。我有一个 GUI,其中包含一个 listView,其中每个项目都有复选框。 我创建了 2 个数组: 第一个用于 listView 中的项目,第二个用于文本文件中的所有行

   string[] itemInList = new string[] { listView1.Items.ToString()
   string[] lineInHosts = File.ReadAllLines(C:\Test.txt).ToArray<string>();

这个想法是比较“C:\Test.txt”文件中的所有行和 listView 中的所有项目。 如果有匹配项,我希望该项目为 item.Checked = true;

PS:我已经尝试过此操作 -

        foreach (var item in itemInList)
        {
            foreach (var l in lineInHosts)
            {
                string itemName;
                ListViewItem foundItem;
                if (item == l)
                {
                    itemName = item.ToString();
                    foundItem = listView1.FindItemWithText(itemName);
                    foundItem.Checked = true;
                }
            }
        }

但它不起作用。

Can anyone help me to solve my little trouble?
I'm writing an app to work with text files. And I have GUI which contains a listView with checkboxes for each item.
I've created 2 arrays:
1st for items in listView and 2nd for all lines in a text file

   string[] itemInList = new string[] { listView1.Items.ToString()
   string[] lineInHosts = File.ReadAllLines(C:\Test.txt).ToArray<string>();

The idea is to compare all lines in "C:\Test.txt" file and all items in the listView.
If there will be a match, I want this item to be item.Checked = true;

PS: I've tried this -

        foreach (var item in itemInList)
        {
            foreach (var l in lineInHosts)
            {
                string itemName;
                ListViewItem foundItem;
                if (item == l)
                {
                    itemName = item.ToString();
                    foundItem = listView1.FindItemWithText(itemName);
                    foundItem.Checked = true;
                }
            }
        }

but it doesn't work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

亣腦蒛氧 2024-12-10 03:48:50

第一行应该不同,第二个循环效率不高:

string[] itemInList =  listView1.Items.OfType<ListViewItem>( ).Select( p => p.Text ).ToArray( );
string[] lineInHosts = File.ReadAllLines( @"C:\Test.txt" ).ToArray<string>( );

string itemName;
ListViewItem foundItem;

foreach ( var item in itemInList )
{
     if (lineInHosts.Contains(item))
     {
         itemName = item.ToString( );
         foundItem = listView1.FindItemWithText( itemName );
         foundItem.Checked = true;                    
     }
}

First line should be different and the second loop is not efficient:

string[] itemInList =  listView1.Items.OfType<ListViewItem>( ).Select( p => p.Text ).ToArray( );
string[] lineInHosts = File.ReadAllLines( @"C:\Test.txt" ).ToArray<string>( );

string itemName;
ListViewItem foundItem;

foreach ( var item in itemInList )
{
     if (lineInHosts.Contains(item))
     {
         itemName = item.ToString( );
         foundItem = listView1.FindItemWithText( itemName );
         foundItem.Checked = true;                    
     }
}
迷迭香的记忆 2024-12-10 03:48:50

这一行看起来很可疑:)

 string[] itemInList = new string[] { listView1.Items.ToString()

itemInList 中只有一项,并且它会像您的类型一样被调用。
而是使用:

string[] itemInList = listView1.Items.Select(x => x.ToString()).ToArray();

This line looks suspicious :)

 string[] itemInList = new string[] { listView1.Items.ToString()

There will be only one item in itemInList, and it will be called like your type.
Instead use:

string[] itemInList = listView1.Items.Select(x => x.ToString()).ToArray();
说谎友 2024-12-10 03:48:50

尝试下面的答案,希望它能节省某人的时间

    foreach (var room in customerRooms)
{
 lstViewRooms.Items.Cast<ListViewItem>().Where(x =>.Text.Contains(room.Room.ToString())).FirstOrDefault().Selected = true;
}

Try below answer, hope it will save someone's time

    foreach (var room in customerRooms)
{
 lstViewRooms.Items.Cast<ListViewItem>().Where(x =>.Text.Contains(room.Room.ToString())).FirstOrDefault().Selected = true;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文