Guzik do zamykania innej formy, Pomocy!

Guzik do zamykania innej formy, Pomocy!
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

Forma1 ma guzik tworzący formę2 oraz guzik zamykający formę2.
Forma2 ma guzik tworzący formę3.
Jak zrobić w formie3 guzik do zamykania formy2 ?? :(
Nie mam dostępu z formy3 do obiektu forma2 utworzonego w formie1 :(

ST
  • Rejestracja: dni
  • Ostatnio: dni
1

To sobie ten dostęp daj? W konstruktorze na przykład?

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

chętnie.. a jak?
forma2, jej konstruktor wywołany w formie1... i co? :/

ST
  • Rejestracja: dni
  • Ostatnio: dni
1

Przecież chcesz zamknąć/schować formę2 z poziomu formy3, więc po co jakaś forma1 teraz do szczęścia potrzebna?

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
1

Bo musisz zapisać sobie referencję tej przekazanej formy np. w konstruktorze i wtedy masz dostęp kiedy chcesz do wskazanej formy.

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

bo ogólnie to jest w grze i forma1 jest główna - tworzy forme2 czyli plansze. po wygranej forma2 wyrzuca okienko forma2 Wygrana! z guzikiem ok który ma zamykać formy2 i 3.
ktoś wie? jak z trzeciej zamknąć drugą utworzoną w pierwszej? pierwsza tworzy drugą więc ma do niej dostęp i może ją zamknąć ale trzecia nie ma :/

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

public partial class Form3 : Form
{

    public Form3()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        //  zamknij2!!!!!!!;
    
    }
}

to jak zamknąć 2? :(

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

mógłby mi ktoś udzielić konkretnej odpowiedzi?

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

referencje do formy2 w konstruktorze formy3? jako argument czy jak ?

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
1

Tak jak napisałem... Jeżeli chcesz zamknąć 2. formę (obojętnie gdzie została utworzona) z 3. formy to na 3. musisz mieć referencję 2., czyli przekazać przez konstruktor najpierw z pierwszej, a potem z drugiej na 3.

EDIT:
@up Jest taka opcja "Edytuj post"... No a przez co? Przez argument.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Swoją drogą to informację o wygranej możesz wyświetlić w MessageBox i możliwe, że nie potrzebujesz tej 3 formy.

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

dziękuję za niechęć pomocy :/

konstruktory są bezargumentowe. jak ma wyglądać taki który przekazuję referencję do innej formy ? moze ktoś to napisać :/ jakbym rozumiał co do mnie mówicie to bym sobie dawno to napisał.

Jest klasa A która tworzy obiekt klasy B. jak ma wyglądać konstruktor i w której klasie aby mieć dostęp w klasie C do obiektu B.

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
2

Przedstawię ci kod pokrótce:

Kopiuj
class Form1
{
    public Form1()
    {
        new Form2().Show(); // tworzymy drugie okno i je wyświetlamy
    }
}

class Form2
{
    public Form2()
    {
        new Form3(this).Show(); // tworzymy trzecie okno i je wyświetlamy
    }
}

class Form3
{
    Form2 frm2;

    public Form3(Form2 frm2)
    {
        this.frm2 = frm2; // przypisujemy zmiennej argument i teraz masz dostęp do formy drugiej
        // ...
        frm2.Close();
    }
}
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

podzięowania :))
mistrzowsko :D

odpowiedź kodem jest lepsza od odpowiedzi zagadką. research trwa a tą konstrukcję zapamiętam i będę potrafił wykorzystać w przyszłości. pomagajmy sobie i innym, pozdrawiam.

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

gra skończona! miszcz :))

  • Rejestracja: dni
  • Ostatnio: dni
0

Jaka jest różnica, gdybym zrobił tak:

Kopiuj
public Form3(ref Form2 frm2)

zamiast tak:

Kopiuj
public Form3(Form2 frm2)

?

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
0

Raczej nie, w tym przypadku to tylko dodatkowa informacja, że przekazujesz przez referencję.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Rejestracja: dni
  • Ostatnio: dni
0

A... No tak, przecież to to samo.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
2
fghfgh napisał(a):

A... No tak, przecież to to samo.

To nie jest to samo. Jeżeli nie przekażesz przez ref, a wewnątrz metody zrobisz na tej zmiennej new, to po wyjściu z metody okaże się, że nic się nie zmieniło :P
Na przykładzie. Mamy klasę:

Kopiuj
class MyInt
{
    public int Value;
    public MyInt(int value) { Value = value; }
}

I jakąś metodę gdzieś:

Kopiuj
public void Method(MyInt myObject)
{
   myObject = new MyInt(5);
}

I teraz gdzieś wywołanie:

Kopiuj
MyInt myGreatInt = new MyInt(3);
SomeClass.Method(myGreatInt);
Console.Write(myGreatInt.Value);

Na ekranie wyświetli się 3. Gdy dodamy ref w przed MyInt - wyświetli się 5

  • Rejestracja: dni
  • Ostatnio: dni
0

No tak, ale w tym wypadku to bez znaczenia.

  • Rejestracja: dni
  • Ostatnio: dni
0

To nie jest to samo. Jeżeli przekażesz przez ref, a wewnątrz metody zrobisz na tej zmiennej new, to po wyjściu z metody okaże się, że nic się nie zmieniło.

Błąd.
Powinno być:

[...] Jeżeli nie przekażesz przez ref [...]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.