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.) ...
|