Avatar billede m_k_l Nybegynder
23. juni 2003 - 16:11 Der 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 ???
Avatar billede odegaard Nybegynder
23. juni 2003 - 16:22 #1
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.
Avatar billede m_k_l Nybegynder
23. juni 2003 - 16:28 #2
okies

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 ???
Avatar billede odegaard Nybegynder
23. juni 2003 - 16:31 #3
jo med javascript som sender din form retur til serveren.
Avatar billede m_k_l Nybegynder
23. juni 2003 - 16:38 #4
Kan man egentlig "fange" browserens control med this.parent ??? I så fald kan man vel også tilføje en eventhandler direkte til denne.

Eller hvad med muligheden for at opsnappe windows msg direkte ???
Avatar billede odegaard Nybegynder
23. juni 2003 - 17:29 #5
Du er altså ude i noget rod med at blande clientside og serverside kode. I gamle dage blev man halshugget for sådan noget :-)
Avatar billede burningice Nybegynder
23. juni 2003 - 23:18 #6
odegaard>> jeg tror du misforstår...

m_k_l>> du kører din kontrol som en active-x-ting på din hjemmeside... har jeg forstået det korrekt?
Avatar billede odegaard Nybegynder
24. juni 2003 - 00:47 #7
Ooooooh ja, det er først nu jeg så detaljen "System.Windows.Forms.UserControl" :-) Tja så er det jo noget helt helt andet.
Avatar billede m_k_l Nybegynder
24. juni 2003 - 09:20 #8
cyberfessor >> Jeps, det er helt korrekt :-)
Avatar billede burningice Nybegynder
24. juni 2003 - 14:39 #9
m_k_l>> well... det første du kan gøre, er jo at slå op i SDK'et (manualen) og se om der er en event til keyboardet

ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemwindowsformsusercontrolmemberstopic.htm

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å
Avatar billede m_k_l Nybegynder
24. juni 2003 - 14:52 #10
been there, done that.....

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)
}
Avatar billede m_k_l Nybegynder
26. juni 2003 - 12:54 #11
Lukker spg.....
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester