26. januar 2007 - 19:57Der er
8 kommentarer og 1 løsning
Reager ved tryk på tastatur
Davs.. Har tænkt mig et lave et lille nemt spil, men står med et stort problem, kan ikke få C# til at reager når jeg trykker på piltasterne, alt, shit og dvs. andre taster. Det funger kun for bogstaverne og talene :S
Dette er scriptet og det funger også fint så længe det kun er bogstaverne og talene.. Har spurgt rundt omkring og de fleste siger bare jeg har det rigtige, men det funger altså ikke..
Har brugt en masse tid på at finde noget brugeligt på nettet via google, men intet held.. håber i kan hjælpe bare lidt ! ;) Burde ikke svære så svært igen :D
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
mcgoat, har ikke valgmuligheden "e.KeyCode" og den komer slet ikke ind i den void hvis jeg trykker på andre taster then "chars" Og hjemmesiden gør mig ikke klogere :/
Du kan sådan set bare override ProcessCmdKey og håndtere tasterne derinde. Har lavet et lille eksempel nedenunder til dig. Du kan bare tilføje flere speciele taster til switch statementet (dem du nu får brug for og som ikke bliver fanget af KeyPress eller KeyDown events'ne).
switch (keyData) { case Keys.Right: break; case Keys.Left: break; case Keys.Up: break; case Keys.Down: break; case Keys.Shift: break; case Keys.Alt: break; default: blnSpecialKeys = false; break; }
crazysnap, ser godt ud. Men har ingen ide om hvordan jeg bruger det :S Kan ikke ud fra det se hvordan jeg skal få den til at se om nogen taster er trykket ned.. Tror det har været mit problem hele tiden.. Altså det script jeg har nu som ser sådan ud, som går over til void når en tast trykkes: public form() { InitializeComponent(); this.KeyPress += new KeyPressEventHandler(KeyPressed); }
Dette giver meget mening for mig, men hvordan med det script du har lavet får jeg den til at skrive med en messagebox "Du trykkede <tasttrykketned>" ?
Snap ! :D mange tak nu har jeg fattet ! ;) Mig der var lidt tungnem i starten :D Tak for scriptet, og send et svar ! ;) forstår dog ik helt hvad bool blnSpecialKeys = true og if(blnSpecialKeys) return true; else return base.ProcessCmdKey(ref msg, keyData); betyder :/
Måske du lige hurtig kunne give en forklaring på det :D så ville det bare være perfekt ! :D
Grunden til jeg har tilføjet den boolean (blnSpecialKeys) er at jeg bremser event'en af OnKeyPress og OnKeyDown når der klikkes på en "special-tast" (altså pilene f.eks). Trykkes der ikke på en special-tast sørger "return base.ProcessCmdKey(ref msg, keyData)" for at kalde de andre events. Du kan bare fjerne den boolean, du skal højst sandsynligt ikke bruge det til noget :).
Så du i stedet får:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.Right: break; case Keys.Left: break; case Keys.Up: break; case Keys.Down: break; case Keys.Shift: break; case Keys.Alt: break; }
return base.ProcessCmdKey(ref msg, keyData); }
Glad for at kunne hjælpe og held og lykke med det! :)
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.