IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Metoda jiného formu, zavření formu

Aktivity
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:14.9.2012 23:26

Můj dotaz bych rozdělil na dvě části:

  1. Zkoušel jsem volat metodu jiného formu, ale pořád mi to píše "An object reference is required for the non-static field, method, or property 'MP3_Player.For­m1.about_exis­ts(bool)'"
  2. Jak volat metodu při zavření formu, našel jsem Form_closed a Form_closing, ale ani u jednoho mi to při vybírání nezobrazovalo jakoukoliv metodu, takže nevím jaký formát má mít metoda abych ji mohl zavolat při zavření formu.
Odpovědět
14.9.2012 23:26
Mo8ilε 15 Ѐλđ
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:14.9.2012 23:53

Tak druhý dotaz již nepotřebuji, Stačilo změnit z

private void closed(object sender, EventArgs e)

na

private void closed(object sender, FormClosedEventArgs e)
Nahoru Odpovědět
14.9.2012 23:53
Mo8ilε 15 Ѐλđ
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Theodor Johnson
David Jančík:15.9.2012 2:12
  1. Můžeš poslat zdrojový kód? Stačí metoda, kterou voláš a metoda, kde ji voláš.
  2. Eventy se dají nastavovat v záložce Events (ikonka blesku) v okně Properties u daného formu, nebo dáš instance.Event += a v tuto chvíli stačí zmáčknout 2x tabulátor a event se doplní a přidá se metoda.
Editováno 15.9.2012 2:13
Nahoru Odpovědět
15.9.2012 2:12
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:15.9.2012 2:24

Metoda ve Form1:

public void about_exists(bool b)
{
    about_form_exists = b;
}

proměnná about bool exists určuje zda se můe vytvořit nové okno, při vytvoření se změní na true a okno se nevytvoří,
pokud okno existuje tak je potřeba po zavření změnit proměnnou(abou­t_form_exists) na false a k tomu jsem napsal do About_form.cs metodu

private void About_form_FormClosed(object sender, FormClosedEventArgs e)
{
    Form1.about_exists(false);
}

ale v tom mi to vyvolá chybu
proměnná about_form_exists byla deklarována ve Form1 se zadanou hodnotou false a true je pouze při vytvoření formu About_form

Nahoru Odpovědět
15.9.2012 2:24
Mo8ilε 15 Ѐλđ
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Theodor Johnson
David Jančík:15.9.2012 2:50

To je nesmysl.

Zda je okno otevřené zjistíš takto, to už jsem ti psal: http://www.itnetwork.cz/…0536ed3bc2ac#…

Form1. -> by byla statika
Musel bys předat instanci formu, aby jsi mohl přistupovat k jeho metodám nebo si ji udělat statickou. Ale to vše už jsem ti psal.

Toto pro tyto účely nepoužívej.

Předání instance:

Form1 parentForm = null;

public About_form(Form1 parentForm)
{
    InitializeComponent();
    this.parentForm = parentForm;
}


public void metoda()
{
    parentForm.cokoliv (přístupnost > private)
}

Statika

public static bool about_exists;

Případně, kdyby ti to nesedělo, tak napiš, co konkrétně potřebuješ udělat.

Nahoru Odpovědět
15.9.2012 2:50
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:15.9.2012 2:57

Nakonec jsem to vyřešil tou statickou metodou, není to nejlepší, ale doufám že nejrychlejší, mám tam i vlákno které je založeno na nízkém vytížení procesoru.

Nahoru Odpovědět
15.9.2012 2:57
Mo8ilε 15 Ѐλđ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.