KeyDown triggar inte? (C#, .NET CFX 3.5, WM6.1)

Permalänk
Medlem

KeyDown triggar inte? (C#, .NET CFX 3.5, WM6.1)

Hallå!

Jag får inte KeyDown att triggas när jag trycker på mina knappar på en Form, Click fungerar dock bra. Tyckte jag läste någonstans att .NET Compact Framework inte stöder detta, någon som vet säkert?

Om det har någon betydelse så skrivs programmet i C# 2008 med .NET Compact Framework 3.5, projektet är för Windows Mobile 5 som körs på min HTC Touch Pro (WM6.1). Det är ok med Click till vissa saker, men nu använder jag telefonen som en handkontroll till ett spel och data skickas över bluetooth och det behöver ske direkt. Finns det något sätt att lura programmet att utföra något direkt en knapp trycks?

Oerhört tacksam om någon kan hjälpa mig.

MVH
Dalton Sleeper

Permalänk
Medlem

Jo, 3.5 stödjer KeyDown, har gjort det sedan 1.0. Har du satt KeyPreview = true på din form? Om du gjort det måste jag kanske komma med ett något nedslående besked: .NET Compact Framework räcker inte riktigt till i sitt standardutförande för att hantera alla events för alla knappar. Den hjälp jag kan ge dig är denna länk: http://blogs.msdn.com/netcfteam/archive/category/9118.aspx

Permalänk
Medlem

Jodå, keypreview är true.
Detta fungerar, fast då måste jag trycka på tangenter, inte knappar i min form...

private void Form1_KeyDown(object sender, KeyEventArgs e) { if ((e.KeyCode == System.Windows.Forms.Keys.Up)) { send("3"); } if ((e.KeyCode == System.Windows.Forms.Keys.Down)) { send("4"); } if ((e.KeyCode == System.Windows.Forms.Keys.Left)) { send("2"); } if ((e.KeyCode == System.Windows.Forms.Keys.Right)) { send("1"); } if ((e.KeyCode == System.Windows.Forms.Keys.Escape)) { send("0"); } } private void btnUP_Click(object sender, EventArgs e) { send("1"); } /*MEN INTE DETTA*/ private void btnUP_KeyDown(object sender, KeyEventArgs e) { send("1"); }

Jag har spanat lite efter sendkeys men ingen lycka ensålänge, den finns tydligen inte i compact heller så blir något hemmagjort... Blir lite trött på detta, funderar nästan på att kolla kollision på form på olika ställen ist

Permalänk
Medlem

Okey, löste det med en någorlunda ful lösning, KeyDown fungerade nämligen på panels så satte sådana istället för knappar Menyerna spelar ingen större roll i reaktionstid så kör Click på dom just nu, kan hända att KeyDown fungerar. Nu har jag ett fullt fungerande Snake (enda spelet i C# just nu) spel med WM6.1 telefon med touch screen som handkontroll, reaktionen vart väldigt mycket bättre än med Click.