Dostep z Form2 do Form1

0

Siema wszystkim.
Mam problem z delegatem. :/
A wiec mam dwie klasy (Windows Form) Form1 i Form2. Klasa Form1 to główny program. W form2 obsługuje zdarzenie podpiete pod delegata i wyskakuje mi błąd.

event Delegat Ksiazka; // Moje Zdarzenie
Form1 form = new Form1(); // Wiem ze to jest źle 
Ksiazka += new  Delegat(form.Metoda); // Do tej metody chce sie dostac -> form.Metoda

I teraz moje pytanie jak osiągnąć taki mam efekt, tylko bez błędu? Bo nie moge przeciez uruchomic 2 razy głównej klasy aplikacji. W Form1 znajduje sie metoda "Metoda" która wpisuje w ListView'a wartości i chce sie do niej dostac z Form2
ps. Form1 uruchamia Form2

0

Może napisz jaki to błąd?

0

Przepraszam źle skonstruowałem zdanie. Nie chodzi mi o błąd jako wyskoczenie wyjatku tylko metoda (form.Metoda) która jest wywoływana przez zdarzenie nie wykonuje operacji na kontrolkach czyli w moim przypadku nie dodaje wpisu do ListView'a.

0

Do instancji glownego okna mozesz sie dobrac poprzez Application.OpenForms[0], ale imo zle do tego podchodzisz, czy Form2 musi wiedziec o Form1? W dobrym designie obiekty powinny zalezec od siebie w jak najmniejszym stopniu.

0

To jak osiagnąć żeby Form2 i Form1 były niezalezne od siebie i zeby przekazać informacje z Form2 do Form1 ?

0

public event Delegat Ksiazka;

0

mam tak i nie działa

0

A bez delegatu metoda działa? może problem w metodzie?

0

matoda ładnie wywołuje sie z delegatu, ale metoda nie wykonuje zadnych działań na kontrolkach wszysko sie wykonuje oprocz tych działań

np.

public delegate DelKsiazka();

public class1
{
//...

public void Metoda()
{
MessageBox.Show("Działa"); //ta linia sie wykonuje
this.listBox.Items.Add("BlaBla"); //a ta już nie

//...
}
}

private class2
{
public event DelKsiazka Ksiazka;
class1 form;

private void init()
{
form = new class1();
Ksiazka += new DelKsiazka(form.Metoda);
}

private void OnKsiazka()
{
if (Ksiazka != null)
{
Ksiazka();
}
}
}

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