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í.
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:5.6.2017 13:23

Ahoj, mám aplikaci, která se ovládá mezerníkem, takže mám ke KeyDown a KeyUp eventům MainWindow přiřazeny příslušné ovládací metody. Zároveň mám ale v okně několik textboxů, které by si stisk klávesy přebraly, takže jsem podle internetu udělal následující úpravu:

K eventu MouseDown na MainWindow jsem přiřadil tuto metodu:

private void MouseClick(object sender, MouseButtonEventArgs e)
{
        if (e.ChangedButton == MouseButton.Left)
        {
                Keyboard.ClearFocus();
                FocusManager.SetFocusedElement(this, this);
        }
}

A funguje to skvěle, když kliknu někam mimo Textboxy (Checkboxům a dalším kontrolkám nastavuji Focusable na False), "vykliknou se", jako na webové stránce a key eventy se normálně spouští.

Mám dva problémy:

  1. Potřeboval bych vysvětlit jak se to má s focusem a jak se to přesně ovládá a vůbec celou tu problematiku, protože jsem to zkrátka nedokázal odnikud pochpit
  2. když okno ztratí focus, a dostane ho tak, že do něj klinu myší, když je zašedlé, key eventy přestanou fungovat a jediný způsob je klinout do textboxu a pak mimo. Když ho stáhnu na lištu a pak kliknu v liště, nebo když kliknu na header zašedlého okna, vše funguje jak má. Co s tím?

Předem děkuji za vysvětlení focusu a vztahu k odchytávání eventů a za pomoc s problémem :)

Editováno 5.6.2017 13:24
Odpovědět
5.6.2017 13:23
Programátor je stroj k převodu kávy na kód.
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 1 zpráv z 1.