Witam, chciałbym przestawić tutaj swój problem mianowicie :
- mam oto taki (wycinek) kodu odpowiedzialnego za pobieranie listy folderów
class Dane
.....
private List<Dokument> Lista = new List<Dokument>();
public List<Dokument> PobierzPlikiIFoldery(string sciezka)
{
Lista.Clear();
string[] foldery = Directory.GetDirectories(sciezka);
foreach (string s in foldery)
{
Dokument dokument = new Dokument(s,Typ.katalog);
Lista.Add(dokument);
}
string[] pliki = Directory.GetFiles(sciezka);
foreach (string s in pliki)
{
Dokument dokument = new Dokument(s, Typ.plik);
Lista.Add(dokument);
}
return Lista;
}
...
tutaj kod klasy Dokument :
class Dokument
{
private string _nazwa;
private long _rozmiar;
private DateTime _dataUtworzenia;
private Typ _typ;
public string sciezka;
public string sciezka_do;
......
}
W pliku głównym mam zadeklarowane 2 listy (program ma być coś ala norton comander), lista lewa to pliki i foldery z np. C:, a lista prawa to samo tylko z np D:
Dane dane = new Dane();
List<Dokument> DrzewoLewe = new List<Dokument>();
List<Dokument> DrzewoPrawe = new List<Dokument>();
Mam również funkcję odpowiedzialną za Używanie i dodawanie elementów do ListView :
private void PobierzPlikiiFoldery(ref List<Dokument> Drzewo,ref ListView listView,string sciezka)
{
try
{
Drzewo = dane.PobierzPlikiIFoldery(sciezka);
listView.Items.Clear();
for (int i = 0; i < Drzewo.Count; i++)
{
ListViewItem item = new ListViewItem(Drzewo[i].Nazwa);
Konwersja k = new Konwersja(Drzewo[i].Rozmiar);
if (Drzewo[i].typ == Typ.katalog)
item.SubItems.Add("katalog");
else
item.SubItems.Add(k.Podziel());
item.SubItems.Add(Drzewo[i].DataUtworzenia.ToString());
listView.Items.Add(item);
if (Drzewo[i].typ == Typ.plik) listView.Items[i].ForeColor = Color.SteelBlue;
}
}
catch
{
label3.Text = "BŁĄD : pobrania drzewa";
}
}
Powiedzmy, że probranie listy katalogów i plików odbywa się w taki posób
dla woli jasności :: TextBox1.Text = "C:"
i w drógim przypadku TextBox2.Text = "D:"
funkcji używam w taki posób dla 1 lub 2 buttonu
PobierzPlikiiFoldery(ref DrzewoLewe, ref listView1, textBox1.Text);
PobierzPlikiiFoldery(ref DrzewoPrawe, ref listView2, textBox2.Text);
Błąd polega na tym, że jeśli pobiorę np 1 sposobem to DrzewoLewe ma listę plików taką jaką ma mieć a Drzewo Prawe jest puste, czyli wszysto ok.
Jeśli zaś Drzewo Lewe ma jakieś dane i kliknę pobierz Drzewo Prawę, to wartośći z Drzewa Lewego = Drzewa Prawego, i działa to także w drugą strone, dane się po prostu nadpisują.
Myślę ze błąd popełniłem gdzieś przy referencjach, niestety nie mogę dojsć gdzie :/