Próbuję więc usunąć element z listy i linii z tekstu. Użyłem Selecteditems [0] i daje mi błąd. I tak, mam multiselect ustawiony na false. Dziennik błędów: ...

1
user11780948 14 kwiecień 2021, 06:35

1 odpowiedź

Najlepsza odpowiedź

Niemożliwe, aby powiedzieć bez odpowiedniego minimalny, powtarzalny przykład. Ale w powyższym kodzie wydaje się, że najpierw wyjmujesz żądany element z samego {x0}}, a następnie próbujesz pobrać właściwość Index z tego samego elementu, przypuszczalnie ten, który właśnie usunięty.

SelectedItems będzie wycofać pusty w wyniku wyjmowania elementu (ponieważ mówisz, że jesteś "... mieć multiselect ustawiony na false" ), więc po spróbowaniu pobierania elementu w indeksie {{ X1}}, Oczywiście, że tam nie ma.

Nawet jeśli było, nie wystawiłbyś, że rzeczywiście pożądałeś przedmiot, ponieważ już usunięto z kolekcji SelectedItems Ten, który chcesz usunąć z linesList później. Każdy element wciąż pozostał w kolekcji SelectedItems byłoby zupełnie innym elementem, a nie ten, który chciałeś usunąć z pliku ports.cfg.

Coś w tym tak było, pracuję lepiej:

ListViewItem portItem = listView1.SelectedItems[0];
int portIndex = portItem.Index;

portItem.Remove();

StreamReader sr = File.OpenText("ports.cfg");
string srStr = sr.ReadToEnd().ToString();
sr.Close();

List<String> linesList = File.ReadAllLines("ports.cfg").ToList();
linesList.RemoveAt(portIndex);
File.WriteAllLines("ports.cfg", linesList);
linesList.ToArray();

Powyżej, oczywiście zakłada, że do czasu osiągnięcia tego kodu, już potwierdziłeś, że w rzeczywistości wybrano przedmiot. Jeśli tak nie jest, musisz również dodać sprawdzić, aby sprawdzić właściwość {X0}}, aby upewnić się, że jest większa niż 0.

1
Peter Duniho 14 kwiecień 2021, 03:49