17. februar 2012 - 13:57Der er
8 kommentarer og 2 løsninger
Registrer tryk på tastatur
Jeg er lige startet med c# programmering og er igang med at lave en simpel regnemaskine. Jeg har udregningerne til at virke, men jeg mangler at kunne bruge numpad tasterne. Så jeg skal bruge en kode der registrer når jeg trykker på en knap på tastaturet og hvilken knap det er. Ved ikke om jeg skal lave en kode for HVER knap, eller om man kan lave en kode der kan tjekke trykket og indsætte det i en variabel. Ved ikke om det er til at forstå hvad jeg mener!?
Jamen jeg har en form med knapperne på, samt en textbox1. Jeg startede med at programmere for 3 dage siden, så det med at sige jeg kan bruge keypress eller en anden event, hjælper mig meget lidt :D Jeg skal bruge et stykke kode, som indsætter det tal jeg trykker på, på tastaturet, i texbox1, samt en variabel jeg har, der hedder indtastet. Pt ser min kode sådan her ud:
Nu mangler jeg så en måde at udspecificere det lidt på: 1. når jeg trykker på et tal, skal det ryge op i textbox1. 2. Når jeg trykker på +,-,* eller /, skal den regne. 3. Når jeg trykker på Enter, skal den give resultatet. 4. Når jeg trykker på alt andet, skal den ikke gøre noget.
Jeg har lige netop lært lidt om case, så tror nok jeg kan bygge det ud fra det du skriver der. Jeg prøver lige en gang og så får du en melding. :) Foreløbig mange tak :)
Okay, nu har jeg lavet et program der virker, med hjælp fra en kollega. Vil gerne dele med jer andre, hvad jeg kom frem til, men det fylder RET meget, så synes ikke lige jeg vil poste det her. Men jeg har brugt KeyDown og så laver jeg en switch på KeyData der ser således ud: Switch(e.KeyData) Case Keys.Add: btn_Add.PerformClick(); break; Case Keys.Subtract btn_Subtract.PerformClick(); break; osv.
hvor btn_* repræsenterer den knap på regnemaskinen der passer til den knap jeg har trykket på, på mit tastatur.
Husk at sætte KeyPreview = true på din form, for at den registrer når du trykker på tastaturet.
Det lige herover er så svaret, kom bare til at poste det som kommentar.
buzzzz>> Vil gerne give dig nogle point for at hjælpe mig og jeg har også brugt det du skrev med, til at komme frem til den endelige løsning. Så skriv venligst et svar, så jeg kan smide point efter dig. :) Og tak for hjælpen.
Hjælp til selvhjælp synes jeg altid er det bedste. Derfor mit svar på den måde. I sidste ende er det kun en selv man straffer, hvis man får det hele lavet, som mange ofte forventer.
Men der er måske nogen ting som kunne laves smartere, det skal jeg ikke lige kunne sige.
Men en ide du kan prøve.
Button har en Tag property som kan indeholde et object. Alt i .NET er et object.
Du kan så på alle dine button sætte Keys.[Add f.eks].
Derefter kan du lede din form igennem eller et Panel, for alle "Control" som Button arver fra og se om dens Tag property er sat og om den er sat til den e.KeyData ... på den måde kan du måske spare noget kode. ( Dvs den part hvor du laver en switch case på de buttons du vil håndtere ).
Men det vil så selvf give lidt kode hvor du skal assign Keys.[Add f.eks] til Tag.
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.