Avatar billede thomaslp Nybegynder
04. november 2004 - 12:33 Der er 6 kommentarer

kan ikke fange key events i winform

Hej,

Jeg forsøger at fange et keyevent (pil ned) ved at registrere keydown i eventlisten i VS2003. Men når jeg trykker på pil ned fanges eventen ikke. Det gælder i øvrigt også alle andre keys...f.eks. J K L mv. Jeg har en Winform med en PictureBox samt 2 Buttons. Er der nogen der har en ide om hvad der går galt? er det noget med fokus på winformen. Jeg kan se at når jeg trykker pil ned skifter jeg mellem de 2 buttons.
Avatar billede thomaslp Nybegynder
04. november 2004 - 18:19 #1
Har fundet ud af at hvis jeg fjerner mine Buttons så fungerer det. Ligeledes fungerer det hvis Button1.enable = false; & Button2.enable = false; Men det er meningen at knapperne skal være tilgængelige hele tiden.

Er der nogen der har et eksempel på en WinForm med én eller flere Buttons der også kan modtage eyevents??
Avatar billede jepsen999 Nybegynder
04. november 2004 - 18:58 #2
Hvis du vil fange piletaster med keydown-eventet mener jeg du skal overskrive metoden IsInputKey
protected override bool IsInputKey(Keys keyData)
{
    if (keyData == Keys.Down)
    {
        return true;
    }
    return base.IsInputKey (keyData);
}

Jeg tester lige
Avatar billede jepsen999 Nybegynder
04. november 2004 - 19:25 #3
Næh, det virker ikke ved at overskrive isinputkey for formen alene.
Hvis du laver din egen knap og overskriver metoden isinputkey virker det. F.eks.
using System;

namespace WindowsApplication2
{
    public class MyButton:System.Windows.Forms.Button
    {
        protected override bool IsInputKey(System.Windows.Forms.Keys keyData)
        {
            if (keyData == System.Windows.Forms.Keys.Down)
            {
                return true;
            }
            return base.IsInputKey (keyData);
        }
    }
}

Lidt noget bøvl at skulle lave sine egne knapper, men det er den eneste løsning jeg kan finde.
Avatar billede burningice Nybegynder
06. november 2004 - 13:47 #4
du skal override din MessageProcessor for din form... den modtager de native windows-messages der kommer, og her kan du se om der kommer en tryk fra piletasten
Avatar billede bitsch Nybegynder
26. august 2005 - 21:05 #5
Du mener vel PreProcessMessage eller hur? Problemet er blot at navigationstaster ikke bliver pre-processed! (så vidt jeg husker) Du kan i stedet fange navigationstasterne i WndProc, eller overveje et alternativt design.
Avatar billede burningice Nybegynder
29. august 2005 - 13:20 #6
nej, jeg tænker på WndProc
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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