Con questo codice:
quando avvio il controllo da tastiera, se non premo nulla, compare la MessageBox che inidica che nessun tasto è stato premuto, poi premi un tasto freccia, clicco su Ok della MessageBox e il controllo funziona dandomi il messaggio del tasto premuto.codice:// Controllo tramite tastiera private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) { while (connesso == true) { if (controlloTastiera == true) { // Rilevazione dello stato della tastiera // Nessun tasto direzionale premuto if ((!Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex.One).IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Up)) && (!Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex.One).IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Down)) && (!Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex.One).IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Left)) && (!Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex.One).IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Right))) { portaSeriale.Write("f"); //MessageBox.Show("Non premuto"); } // Freccia giù if (Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex.One).IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Down)) { portaSeriale.Write("i"); MessageBox.Show("GIU"); } // Freccia su if (Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex.One).IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Up)) { portaSeriale.Write("a"); MessageBox.Show("SU"); } // Freccia sinistra if (Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex.One).IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Left)) { portaSeriale.Write("s"); MessageBox.Show("SINISTRA"); } // Freccia destra if (Microsoft.Xna.Framework.Input.Keyboard.GetState(PlayerIndex.One).IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Right)) { portaSeriale.Write("d"); MessageBox.Show("DESTRA"); } } } }
Se non passo dal primo controllo (quello su nessun tasto direzionale premuto) o non metto al suo interno una istruzione bloccante come la MessageBox, premendo i tasti direzionali non avviene nulla, come se non venissero controllati.
Non capisco dove si trovi l'errore.


Rispondi quotando