Přepsat chování karta v WinForms

hlasů
5

Mám UserControl, který se skládá ze tří textových polí. Na formuláři I mohou mít jedno nebo více či můj UserControl. Chci implementovat vlastní chování kartu, takže v případě, že uživatel stiskne klávesu Tab na druhé textové pole bych měl pohybovat pouze na třetí textové pole, pokud je zadán druhý TextBox cokoliv. Pokud se nic zapsána v druhém TextBox další kontrolu formy by měly získat fokus podle normálního chování prvků. V případě, že uživatel nezadal nic v první nebo druhé textové pole a na kartě lisů je to zvláštní případ, kdy by měl být vynechán ovládací ve formuláři.

Pomocí ProcessDialogKey mi podařilo dostat to funguje trochu v pořádku, ale mám ještě jeden problém. Moje otázka je, jestli existuje způsob, jak zjistit, jak ovládací prvek WinForms dostal soustředit, protože bych také rád věděl, v případě, že můj UserControl dostal se zaměřují z Tab nebo Shift-Tab a pak dělat svou podivné věci, ale v případě, že uživatel klepne na ovládací I nechceme dělat nic zvláštního.

Položena 16/08/2008 v 21:48
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
3

Jako obecné pravidlo, řekl bych, že potlačí standardní chování klávesy TAB by být špatný nápad. Možná, že si můžete udělat něco jako zakázání 3. textové pole, dokud platný záznam se provádí ve 2. Do textového pole.

Teď, když to řekl, já jsem také zlomený toto pravidlo na žádost zákazníka. Udělali jsme Enter klíčovou funkci jako klávesy TAB, kde by Enter uložení dat v textovém poli, a posunutí kurzoru na další pole.

Odpovězeno 16/08/2008 v 21:55
zdroj uživatelem

hlasů
1

Důvodem tohoto podivného chování záložce je vše o rychlosti ve vstupním procesu. Bylo to opravdu dobré, aby si nějaký vstup, Nepřemýšlel jsem o zakázání textové pole, ale že by se skutečně fungovat. Ale za použití klávesy Enter přijmout vstup dokonce ani mě napadlo. Že bude fungovat mnohem lépe. Uživatel může zadat čísla a poté stiskněte klávesu enter pro potvrzení vstupu a další možné textové pole bude aktivní. Je to jako mít koláč a jíst to taky, Faktor rychlost je tam, protože při použití tlačítka Enter žádný zbytečný Tabing musí být provedeno se dostat do správného pole a pomocí klávesy Enter vedle numerické klávesnici je to opravdu hladký.

Díky za vstup!

Odpovězeno 17/08/2008 v 07:50
zdroj uživatelem

hlasů
1

Nemyslím si, že je tu vestavěný způsob, který by to mohl udělat. Všechna WinForms zaměřit akce (GotFocus, LostFocus, Enter, Nechat) je volána s prázdnými EventArgs parametry, které vám nedává žádné další informace.

Osobně bych zakázat třetí textové pole, jak řekl Rob Thomas. Pokud jste rozhodnuti, jak to udělat, i když to by nemělo být obtížné nastavit ručně (číst hackish) řešení. Po stisknutí klávesy TAB (v případě, že důraz je kladen na druhé textové pole), nastavit proměnnou uvnitř formuláře. Pokud je další objekt zaměřil je pak třetí textové pole, pak víte přesně, jak se to stalo.

Odpovězeno 16/08/2008 v 22:38
zdroj uživatelem

hlasů
0

Lepší než zakázání ovládacích prvků, zkuste monkeying kolem TabStop - pokud je tato falešná, bude řídicí být jednoduše přeskočí při tabbing.

Já bych také naznačují, že změna událostí textové pole je místo, kde se aktualizuje TabStop na další ovládací prvky.

Udělal jsem něco podobného, ​​jak to s kontrolou přihlášení, kde by uživatelé zadávají buď uživatelské jméno nebo e-mailovou adresu (v samostatných polí), plus své heslo, a TabStop je to, co jsem použil pro svou práci.

Odpovězeno 22/10/2008 v 21:18
zdroj uživatelem

hlasů
0

Souhlasím s DannySmurf. Probírat se pořadí prvků by vám peklo později pokud nejsou splněny požadavky na změnu aplikace.

Další věc, kterou můžete udělat, je zavést nějaký průvodce pro uživatele, aby projít.

Odpovězeno 16/08/2008 v 23:02
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more