Добавление элементов в ListView из ActionInvoke в C #?

#c# #listview #tcp

#c# #listview #tcp

Вопрос:

Итак, что у меня есть до сих пор, это прослушиватель TCP, и как только клиент подключится, он добавит, что их сообщение будет добавлено в представление списка. Это то, что было до сих пор. Как мне ввести их сообщение, отправленное через TCP, в ListView? Это приложение WinForms.

     private static void clientHandler(object client)
    {
        TcpClient cClient = (TcpClient)client;
        NetworkStream stream = cClient.GetStream();
        byte[] clientName = new Byte[1024];
        stream.Read(clientName, 0, clientName.Length);

        listView1.Invoke(new Action(() => 
            ListViewItem newClient = new ListViewItem();
            newClient.SubItems.Add(pet.Name);
            newClient.SubItems.Add(pet.Type);
            newClient.SubItems.Add(pet.Age);

           listView.Items.Add(lvi);
        ));
        MessageBox.Show(Encoding.ASCII.GetString(clientName));
        stream.Close();
        cClient.Close();
    }
 

Комментарии:

1. Это WPF, Winforms? Ответ отличается между ними. Если WPF, есть ли у вас связанная коллекция, в которую вы могли бы добавить?

2. Это WinForms, извините, что не добавил это в исходное сообщение.

3. Что не работает в вашем коде? это выглядит довольно разумно для WinForms, кроме не объявленной pet переменной.

4. prntscr.com/3vuy2d

5. Похоже, вам просто не хватает многострочных лямбд {}, которые им нужны. Поместите один после =>, а другой перед первым закрытием)