Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: c# form - zjištění aktivního okna aplikace

C# .NET .NET (C# a Visual Basic) c# form - zjištění aktivního okna aplikace American English version English version

Aktivity (1)
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
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  ±0 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  +1 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.