28. november 2006 - 13:31Der er
11 kommentarer og 1 løsning
Test for om key er nede
Hej alle
Kan man teste for om f.eks. Ctrl-tasten er trykket ned? Pt. har jeg lavet en KeyUp der gemmer en bool til true hvis det Ctrl-tasten der trykkes på, og så på KeyUp sætter bool'en til false, hvis det er Ctrl der slippes. Dette kunne jeg dog godt tænke mig at undgå...
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
Ok, jeg har et panel med forskellige ting tegnet på. Det panel kan der oprettes bl.a. kasser på. Disse kasser kan bl.a. markeres og flyttes en eller flere af gangen, alt efter hvor mange der er markeret.
Når jeg klikke rundt på kasserne skal den fjerne markeringen fra de forrige valgte, hvis Ctrl ikke er nede, men ikke fjerne markeringen fra de forrige hvis Ctrl er nede. Pt. gør jeg det ved at sætte en bool true ved KeyDown på Ctrl og igen sætte den til false ved KeyUp på Ctrl. Problemet er dog så hvis der kommer en anden form op imellem mit KeyDown og KeyUp...
nej ... men min hjerne tænker da lidt over det, synes ikke lige jeg kan finde nogne løsning på det, men måske der er nogen andre herinde som kan hitte en løsning ... jeg skal i hvert fald nok melde tilbage hvis jeg kommer på noget ...
Man kunne måske sætte den til false, når formen bliver aktiv igen ...
Du skal bare bruge WinAPI kaldet GetAsyncKeyState. Den skal importeres fra user32.
Den returnerer dig en short der fortæller dig om key'en er trykket ned, om den har været trykket ned siden sidst du kaldte funktionen eller om key'en ikke har været rørt. Alle keys har et nummer. De to ctrl-taster er A2 og A3. Dem spørger man så efter. Så vidt jeg husker returnerer funktionen 0 (0x0000) hvis ikke tasten er rørt, 1 (0x0001) hvis den har været rørt og -32767 (0x8000) hvis den er trykket ned.
Eksempel:
[DllImport("user32")] public static extern short GetAsyncKeyState(int vKey);
private void button1_Click(object sender, EventArgs e) { short rightCtrl = GetAsyncKeyState(0xA3); short leftCtrl = GetAsyncKeyState(0xA2);
Tak tak... Har ikke tjekket det endnu, da jeg løste det på anden måde, men vil helt sikkert bruge dit svar næste gang! ;o)
Synes godt om
Ny brugerNybegynder
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.