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

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

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

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2004

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

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

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

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

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.

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |