Ik ben bezig een applicatie te maken voor een PDA.
In dit specifieke geval probeer ik een (ingebouwde) barcodescanner aan te roepen. Op een UniTech PA960 is dat via de Scanner-API de scanner aanzetten en wachten op het event, daadwerkelijk het lasertje aanzetten enzo doe je hardwarematig door op een knopje te drukken.
Op een Mobile Compia M3 echter moet je in software de laser aanzetten. Dit kan ook met een knopje, maar dat levert een KeyDown (en Up) event op op Keys.F22. En daar zit het probleem.
Zodra de gebruiker in het schermpje komt waar hij moet scannen gaat het goed. Drukt hij echter eerst op een knopje, dan heeft het form geen focus meer en krijgt deze dus ook geen Key*-events meer.
Ik zie dat mijn collega's dat al eerder zijn tegengekomen en dus maar bij ieder control een eventhandler hebben gemaakt die de eventhandler van het form aanroept
300 eventhandlers die dus alleen maar frm*_Key*(sender, e) aanroepen.
Dat moet makkelijker kunnen. Delphi heeft er een KeyPreview voor, en zowaar, MSDN en Google vinden dat VB.net dat ook moet kunnen.
Visual Studio 2003 met Compact Framework 1.5 (2.0 is helaas (md5
zie daar maar een werkende implementatie van te vinden onder VB.net, zelfs zonder option strict of option explicit, iedereen roept dat je de CryptoProvider moet gebruiken) niet mogelijk omdat de PDA's dat niet snappen) vind echter van niet. System.Windows.Forms.Form heeft geen KeyPreview-property. Me niet, frm* niet, niks. Ook in de object-inspector, of properties-panel of net hoe dat ding in VS2003 mag heten staat hij er niet tussen. Op alfabet gesorteerd springt hij van Icon naar Language.
Waarom kan ik hem dan niet aanroepen / op true zetten?
In dit specifieke geval probeer ik een (ingebouwde) barcodescanner aan te roepen. Op een UniTech PA960 is dat via de Scanner-API de scanner aanzetten en wachten op het event, daadwerkelijk het lasertje aanzetten enzo doe je hardwarematig door op een knopje te drukken.
Op een Mobile Compia M3 echter moet je in software de laser aanzetten. Dit kan ook met een knopje, maar dat levert een KeyDown (en Up) event op op Keys.F22. En daar zit het probleem.
Zodra de gebruiker in het schermpje komt waar hij moet scannen gaat het goed. Drukt hij echter eerst op een knopje, dan heeft het form geen focus meer en krijgt deze dus ook geen Key*-events meer.
Ik zie dat mijn collega's dat al eerder zijn tegengekomen en dus maar bij ieder control een eventhandler hebben gemaakt die de eventhandler van het form aanroept
Dat moet makkelijker kunnen. Delphi heeft er een KeyPreview voor, en zowaar, MSDN en Google vinden dat VB.net dat ook moet kunnen.
Visual Studio 2003 met Compact Framework 1.5 (2.0 is helaas (md5
Visual Basic .NET:
MSDN noemt echter nergens versienummers van (al dan niet compact-) frameworks waarin deze property voor het eerst geintroduceerd wordt. Omdat het ook al in VB6 zat neem ik eigenlijk aan dat deze property er al in het eerste framework bijzat.1
2
| Me.keypreview = True ' 'keypreview' is not a member of 'AFSS.frmLogin' |
Waarom kan ik hem dan niet aanroepen / op true zetten?
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock