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

C# .NET .NET (C# a Visual Basic) Metoda jiného formu, zavření formu American English version English version

Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
David Jančík [sczdavos]:
  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
Čím více času dostaneš, tím méně ho máš.
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Odpovídá na Theodor Johnson
David Jančík [sczdavos]:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
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.