Pobieranie danych z form1 do form2

1

Witam!

Mam program w ktorym moge pobrac liste plikow graficznych z wybranego katalogu, spis ten umieszczam w listboxie i po kliknieciu na dana nazwe pliku (w listboxie) obrazek pokazuje mi sie w pictureboxie.

Chce zeby te obrazki z listboxa uruchomily sie w nowej formie (button otwiera form2) i zmienialy sie co jakis czas. Problem polega na tym ze nie moge pobrac danych z listboxa z form1 do form2..

Prosze o pomoc.

0

setki razy to było, poszukaj!

0

tak pobieram dane do listbox z form1

if (fbd.ShowDialog() == DialogResult.OK)
            {
                string roz = textBox1.Text;
                string[] pliki = Directory.GetFiles(fbd.SelectedPath, "*." +roz, SearchOption.AllDirectories);
                listBox1.Items.AddRange(pliki);

            }

jak odwolac sie w form2 do 'pliki'?

form2: pliki wczytywane z katalogu:

string dir = "c:\\obrazki";
            try
            {
                nazwy = Directory.GetFiles(dir);
            }

chce zeby po kliknieciu przycisku otworzyla sie nowa forma w ktorej obrazki z tablicy pliki byly wczytywane do form2.
wiem ze to banal ale nie mam pojecia jak to zrobic ;/

0

Tak jak sugeruje ŁF: masz na tej stronie w prawym górnym rogu okienko "Szukany tekst...". Wpisz tam hasło: "dwie formy" i naciśnij tą lupkę - efekt, to odpowiedzi na rozwiązanie twojego problemu.

0
Barver napisał(a)
if (fbd.ShowDialog() == DialogResult.OK)
            {
                string[] pliki = Directory.GetFiles(fbd.SelectedPath, "*." +roz, SearchOption.AllDirectories);
            }

jak odwolac sie w form2 do 'pliki'?
przecież to zmienna lokalna, jej czas życia jest taki, jak bloku, w którym została zadeklarowana. taką zmienną możesz podać jako

  • parametr metody,
  • przypisać do zmiennej globalnej w ramach obiektu, wtedy przedłużasz jej życie na czas istnienia obiektu
  • parametr eventa.
    Ciebie interesuje pierwsza wersja, więc potrzebujesz trzymać w form1 referencję do form2 i wywołać form2.metoda(pliki). referencję do form2 otrzymasz jeśli form2 utworzysz z form1, albo "wstrzykniesz" z zewnątrz do form1 z kodu, który dysponuje naraz form1 i form2.
    to są podstawy.

możesz też zrobić to ładniej - rzucić eventem, który przekaże zawartość zmiennej pliki. ale żeby podczepić się pod taki event to i tak musisz dysponować w jednym miejscu referencją do form1 i form2 (form2 musi dodać handler do eventu odostępnianego przez form1. innymi słowy form2 musi zrobić form1.OnPlikiChanged += MyCoolPlikiChangedHandlerMethod;).

0

udalo mi sie to polaczyc

w buttonie otwierajacym form2 mam

 Form2 Form2 = new Form2(this);

a w form2

 private Form1 f1;
                public Form2(Form1 f)
                {
                        InitializeComponent();
                        f1 = f;
                }

dzieki temu moge sie odwolac do form1 uzywajac f1.
teraz musze pokombinowac jak pobrac dane z listboxa ;o

dzieki za pomoc

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