TextBox active keyboard 'cs-CZ' culture   otázka

C#, VB.NET, WinForms

Velevážení programátoři a programátorky,

nebyl byl jednou jeden textbox pro číselný vstup zobrazený v rozbalovací nabídce.

Není-li numerická klávesnice je pro psaní číslic 0-9 nutno přepnout na klávesnici EN.

Cílem je psát do textboxu čísla bez ohledu na aktuální klávesnici.

Ještě nastíním, jak jsem se do toho vlastně dostal, proč si vymýšlím nesmysly.

Při pokusu použití ALt+Shift pro přepnutí klávesnice se zavře popup s textboxem,

neboť ztratí focus...

Je nutné někde povolit ALt ve smyslu InputKey=True nebo IsInputKey=True, ale kde?

Jakou událost nejlépe použít? Bude nutné podědit z textboxu vlastní control, že?

Přesto, že se povede Alt přivést k poslušnosti, bych se původní myšlenky nevzdával.

Jak správně ověřit je-li aktivní česká klávesnice?

Něco na způsob InputLanguage.Culture.Equals("cs-Cz")?

Uvažuji předat znakům 0-9 místo hodnot 48 až 57 posílaných z české klávesnice

hodnoty 0-9 posílané z numerické klávesnice (NumPad) tedy 96 až 105, k tomu

opět potřebuji událost, kde se provede změna hodnoty a bude následně odeslána

do okna, to v události KeyDown nelze (bylo možné ve VB6), zde snaha končí tím,

že buď je hodnota znaku pro čtení, nelze tudíž změnit, navíc se zpráva neodešle

do okna, marnost bez kýženého efektu. Potřebuji najít to správné místo, nevíte?

Nabízí se WndProc, kde zachytávat WM_KEYDOWN , možná pomoci něčeho čehosi jako

IMessageFilter, kde potřebuji pro hodnoty znaku 48 sž 57 přičíst 48 :

If keyCode>=48 And keyCode <= 57 then msg.WParam= msg.WParam + 48

Myslím si, že přehlížím něco mnohem užitečnějšího, co by šlo lépe použít, proto

se obracím na Vás zkušení programátoři s prosbou o nasměrování a radu, neboť bych

rád využil něco z .Net nástrojů a pokusil se s Vaší pomocí záměr posunout k cíli.

Předem Vám všem děkuji za veškerou případnou projevenou snahu a účast.

...

Vím, že existuje NumericUpDn, ale uvažuji o nějakém univerzálním řešení, aby textbox

pouze při potřebě předával čísla a jinak text jako obyčejně, přidat si třeba vlastní

boolean property ve smyslu IsNumeric nebo cosi jako ValueType a dle typu požadované

hodnoty, posoudit konkrétní požadavek (např. je-li žádán typ Integer či Decimal ...)

dle toho dále pracovat s desetinou čárkou, počtem desetinných míst, formátem apod.)

...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback