Как сделать элемент listView проверенным после сравнения какой-либо строки? - PullRequest
0 голосов
/ 05 сентября 2011

Может ли кто-нибудь помочь мне решить мою маленькую проблему?Я пишу приложение для работы с текстовыми файлами.И у меня есть графический интерфейс, который содержит listView с флажками для каждого элемента.Я создал 2 массива: первый для элементов в listView и второй для всех строк в текстовом файле

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

Идея состоит в том, чтобы сравнить все строки в файле C: \ Test.txt и все элементы.в списке.Если будет совпадение, я хочу, чтобы этот элемент был 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;
                }
            }
        }

но этоне работает.

Ответы [ 3 ]

0 голосов
/ 05 сентября 2011

Первая строка должна отличаться, а второй цикл не эффективен:

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;                    
     }
}
0 голосов
/ 22 февраля 2019

Попробуйте ответ ниже, надеюсь, это сэкономит кому-то время

    foreach (var room in customerRooms)
{
 lstViewRooms.Items.Cast<ListViewItem>().Where(x =>.Text.Contains(room.Room.ToString())).FirstOrDefault().Selected = true;
}
0 голосов
/ 05 сентября 2011

Эта строка выглядит подозрительно:)

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

В itemInList будет только один элемент, и он будет называться как ваш тип.Вместо этого используйте:

string[] itemInList = listView1.Items.Select(x => x.ToString()).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...