Witam.
Zaczynam duży projekt w c#, który w swoim założeniu powinien pomóc mi z archiwizacją danych na dyskach zewnętrznych na których znajdują się pliki video. I mam taki problem. W jaki sposób poprzez wykonywanie sie warunku foreach czyścić zawartość komórki w listboxie? Otóż mam ich 2. Aby automatycznie segregować pliki wedle nazw (za pomocą regexa) przenosze nazwy z jednego listboxa do drugiego w odpowiednie miejsce. Także pętla wygląda tak:
foreach (string temp in listBox1.Items)
{
Match m = Regex.Match(temp, porownanie, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
if (m.Success)
{
listBox2.Items.Insert(lista4 +2, temp);
}
}
Wyjaśnienie:
temp - wyciągnięty wpis z listboxa1
porownanie - wzorzec
lista4 + 2 - indeks z umieszczonym wzorcem znajdujący sie w listboxie2. Specjalnie tak zrobiłem, że listbox2 będzie wczytywał plik txt z posegregowanymi już wpisami. Program wczytuje dynamicznie gdzie dopisać nowy wpis z listboxa1 (aktualizuje tylko a nie tworzy na nowo całej listy). Dlatego w list4 mamy indeks pod którym umieszczony jest wzorzec a wpis powinien pojawić sie 2 pozycje pod nim.
Chciałbym aby po spełnieniu warunku m.success i dopisaniu elementu do listboxa2, wpis z listboxa1 został albo usunięty trwale albo przynajmniej go wyzerować aby warunek nigdy nie był spełniony (tym samym dany wpis nie pojawi sie w parunastu miejscach jednocześnie w zależności od wzorca). Można by to zrobić poprzez setselected i potem remove ale wtedy będzie problem z pętlą bo zmieni sie warunek foreach. W takim razie aktualizacja do 0. Jak to najłatwiej zrobić?