Jak wywołać funkcję z innego okna(klasy)? A konkretnie mam timer w oknie Form1, chciałbym aby po kliknięciu na przycisk w oknie Form2 był on uruchamiany.
Drugie pytanie, jak dla jednego zdarzenie (np. kliknięcia w przycisk) przypisać dwie akcje?
Jak wywołać funkcję z innego okna(klasy)? A konkretnie mam timer w oknie Form1, chciałbym aby po kliknięciu na przycisk w oknie Form2 był on uruchamiany.
Drugie pytanie, jak dla jednego zdarzenie (np. kliknięcia w przycisk) przypisać dwie akcje?
kontrolka.zdarzenie += drugaMetoda;
krwq napisał(a):
- Potrzebujesz w klasie form2 obiekt na którym możesz wywołać metodę, czyli w dowolny sposób przekazać temu oknu referencję na form1, a później za pomocą operatora dostępu (kropki) wywołać tą metodę
Ok, w klasie Form2 daje:
Form1 klasa = new Form1();
Problem w tym, że tworzone jest wtedy kolejne okno, ponieważ konstruktor w Form1 zawiera InitializeComponent()
Jeżeli stworze sobie dodatkowy pusty konstruktor i stworze obiekt tak
Form1 klasa = new Form1(1); // korzysta z przeciążonego konstruktora
wtedy pojawiają się błędy nullreferenceexception
krwq napisał(a):
kontrolka.zdarzenie += drugaMetoda;
Wpadłem na to :), natomiast wystarczy zmiana w oknie (dodanie nowego elementu, przesunięcie, cokolwiek) i kod jest usuwany
w formie 1 daj przy tworzeniu formy 2:
Form2 druga_forma = new Form2(this);
w formie 2 daj:
private Form1 form1;
public Form2(Form1 form1) // konstruktor
{
this.form1 = form1;
InitializeComponent(); // czy co tam domyślnie jest
}
i teraz w formie 2 masz pole form1
które jest twoją formą pierwszą.
żeby się nie pomylić, zrób taki konstruktor zamiast, a nie oprócz, konstruktora domyślnego.
http://wklej.org/hash/fc7b634914b/
Błąd nullreferenceexception wyświetla się przy wywołaniu funkcji z Form1 w oknie Form2.
żeby się nie pomylić, zrób taki konstruktor zamiast, a nie oprócz, konstruktora domyślnego
Form2 t = new Form2(); //uruchamia drugie okno
wywal.
public Form2()
{
InitializeComponent();
}
wywal.
Azarien napisał(a):
Form2 t = new Form2(); //uruchamia drugie okno
wywal.
Tylko jak uruchomić nowe okno? Wpisanie druga_forma.Show(); wyrzuca błąd The name 'druga_forma' does not exist in the current context