Kilka załadek w tabControl z tymi samymi elementami

0

Sprawa wygląda tak, że mam formatkę z umieszczonym na niej tabControlem, a program ma służyć do otwierania plików. Na początku nie mam żadnych zakładek, a otwierając plik program ma dodać nowa zakładka z dataGridViewem, otwierając kolejny plik, ma się dodawać kolejna zakładka z kolejnym dataGridViewem itd. Teraz pytanie jak takie coś najlepiej zaimplementować, no i co z nazewnictwem elementów, tak żebym mógł łatwo zarządzać zakładkami i elementami na każdej z zakładek?

0

Z problemem tworzenia poradziłem sobie w ten sposób:

        
public void dodaj_zakladke(Plik plik_)
{
	 TabPage _zakladka = new TabPage();
            _zakladka.BackColor = Color.Transparent;
            _zakladka.UseVisualStyleBackColor = true;
            _zakladka.Padding = new Padding(3, 3, 3, 3);
            _zakladka.Text = plik_.NazwaPliku;

            ListBox _lista = new ListBox();
            _lista.Location = new Point(6, 10);
            _lista.Size = new Size(135, _tablicaPlikow.Size.Height - 186);
            _lista.DrawMode = DrawMode.OwnerDrawVariable;
            _lista.FormattingEnabled = true;
            _lista.ItemHeight = 17;
            _lista.Items.Clear();

            _zakladka.Controls.Add(_lista);
	    _tablicaPlikow.TabPages.Add(_zakladka);

	    _tablicaPlikow.SelectTab(_otwartePliki.Pliki.Count - 1);

	    // klasa _otwartePliki przechowuje aktualnie otwarte pliki w formie listy;
}

private delegate bool delDaneOtworz(ref string sciezka_);

private void otwórzToolStripMenuItem_Click_1(object sender, EventArgs e)
{
            string sciezka_ = null;
            Otworz otworz = new Otworz();
            delDaneOtworz delegacja = new delDaneOtworz(otworz.pobierz_dane);
            otworz.ShowDialog();
            if (delegacja(ref sciezka_))
            {
                if (_otwartePliki.OtworzPlik(sciezka_))
                {
                    this.dodaj_zakladke(_otwartePliki.Pliki[_otwartePliki.Pliki.Count - 1]);
                }
            }
}

Tylko teraz mam następujący problem. Poza funkcją dodaj_zakladke(), w której oprócz mniej więcej tego co jest, mam jeszcze przeciążone metody Click i DrawItem, nie mogę się odwoływać do konkretnych ListBoxów, czyli np. po naciśnięciu jakiegoś przycisku, mam dostęp do poszczególnych zakładek, a co za tym idzie do odpowiednich plików, ale nie mam dostępu już do ListBoxów. Po wyjściu z funkcji dodaj_zakladke() tracę do nich referencję. Moje pytanie brzmi jak to najlepiej teraz rozwiązać? W jakimś głównym zasięgu stworzyć sobie Listę typu ListBox i w niej przechowywać referencję, do poszczególnych ListBoxów z zakładek? Czy może proponujecie coś innego?

Pytanie dodatkowe :). Wywołując dodatkowe okno do otwarcia pliku (wskazanie ścieżki, itp.) w jaki inny sposób można z tego okna zwrócić wartości do głównego okna, oprócz delegacji, której użyłem? W tym okienku do ścieżki i innych danych dotyczących pliku mam metodę pobierz_dane(), która zbiera wartości z checkBoxów i textBoxa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1