NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Michaal.K
Člen
Avatar
Michaal.K:18.3.2016 12:01

Ahoj,
chtěl jsem jestli lze nějak zjistit jaké okno aplikace je právě aktivní?
Zkoušel jsem to takhle:

Form fc = Application.OpenForms["SettingsForm"];
            if (fc == null)
                return;

ale to nefunguje tak jak bych potřeboval. Mám MainForm a na něm můžu otevřít okno nastavení a teď bych potřeboval zjistit že je aktivní okno nastavení.
Díky

 
Odpovědět
18.3.2016 12:01
Avatar
Ondřej Štorc
Tvůrce
Avatar
Nahoru Odpovědět
18.3.2016 12:06
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Jakub Šilhavý:18.3.2016 17:13

Můžeš si vyhledat funkci, která ti zjistí právě aktivní formulář nebo pokud ti to nevadí můžeš si deklarovat pro formulář "nastavení" a pro MainForm logické proměnné, které ti budou mít hodnotu true, když otevřeš příslušný formulář a hodnotu false, když bude zavřený.

Nahoru Odpovědět
18.3.2016 17:13
Život je pes, a proto žít je psina.
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Jakub Šilhavý
Michaal.K:21.3.2016 10:38

Ahoj, a to myslíš funkci activeform na zjištění aktivního formuláře? Ta mi právě nějak nefungovala. Ale asi to je tím, že okno nastavení volám takto:

Form settings = new SettingsForm(this);
settings.ShowDialog(this);
 
Nahoru Odpovědět
21.3.2016 10:38
Avatar
Odpovídá na Michaal.K
Michal Štěpánek:21.3.2016 11:30

Pokud voláš form jako dialog, tak přece nemusíš zjišťovat, jestli je aktivní, protože jiné okno být v tu chvíli aktivní nemůže...

Editováno 21.3.2016 11:31
Nahoru Odpovědět
21.3.2016 11:30
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Michal Štěpánek
Michaal.K:21.3.2016 13:50

Ale jak zjistím, že je otevřen tento dialog? Zatím to mám takto:

Form fc = Application.OpenForms["SettingsForm"];
            if (fc == null)
                return;

To funguje, ale chtěl jsem nějaké lepší řešení...

 
Nahoru Odpovědět
21.3.2016 13:50
Avatar
Odpovídá na Michaal.K
Michal Štěpánek:21.3.2016 14:08

Nějak pořád nechápu, co na tom chceš zjišťovat? Pokud jakýkoliv form otevřu metodou

form.ShowDialog();

tak prostě jiný být aktivní nemůže, to by jinak bylo proti logice dialogů.

Nahoru Odpovědět
21.3.2016 14:08
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Michal Štěpánek
Michaal.K:21.3.2016 14:54

Jasně, ale já používám událost na příjem ze sériové linky a pokud mi něco přijde po rs232 a já jsem zrovna na mainformu, tak něco udělám a pokud mám otevřený settingsform (přes form.ShowDialog(); ) a něco mi přijde na sériovou linku, tak udělám něco jiného.
Nevím jestli je to srozumitelné :-)

 
Nahoru Odpovědět
21.3.2016 14:54
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 8 zpráv z 8.