23. juni 2003 - 16:11Der er
10 kommentarer og 1 løsning
Keyboard event på web side
Hej,
Jeg har lavet en dll med en usercontrol (System.Windows.Forms.UserControl), som jeg så benytter på en hjemmeside. Mit problem er nu at jeg gerne vil have denne dll til at fange nogle tastetryk, f.eks. skal der ske nogle bestemte ting når der trykkes på tast "1" og "Enter" på tastaturet.
Hvordan kan dette lade sig gøre ???
Har en sådan usercontrol i det hele taget focus, når den benyttes i en browser, eller er det browseren man skal have fat i, for at hente tastetrykkene ???
Det vil kræve en postback, og under alle omstændigheder skal du til at rode med javascript, da det du vil er client-side scripting. Det er noget rod at ville gøre noget clientside med en serverside komponent.
Selv om det udelukkende er internt i usercontrollen, at der skal ændres i en TextBox når der trykkes på "Enter" er det altså ikke muligt at fange tastetrykket ???
sørme om der ikke var det... der er både en keydown og en keypress event, hvor du ud fra EventArgs'ene kan finde ud af hvilken knap der blev trykket på
Mit problem er, at fokus ikke altid er knyttet til user kontrollen, selv om browser vinduet er aktivt.
Indtil videre har jeg løst det med nedenstående funktion* i min dll, men den virker kun når user kontrollen har fokus. dvs. brugeren skal trykke på kontrollen inden tastaturet virker - hvilket jo ikke er heldigt. Hvis man alternativt skulle sætte fokus inde fra user kontrollen selv, ville det give store problemer med resten af indholdet i browseren.
Findes der ikke en måde så man kan modtage de tastetryk som browseren modtager, så man ikke er afhængig af om der er fokus på user kontrollen eller ej ???
* protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) { Process data from keyboard according to keyData (==Keys.key) }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.