C# - detectar duas teclas ao mesmo tempo

06/11/2010

0

Bom dia, estou com problemas para detectar duas teclas ao mesmo tempo, estou usando o SharpDevelop 3.2, segue o código:isso funciona:
 if(e.KeyData == Keys.Up)
			{
				Point x = pictureBox1.Location;
				pictureBox1.Location = new Point(pictureBox1.Location.X ,pictureBox1.Location.Y -2);	
			}
[CODE]

já isso não:[CODE]void MainFormPreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
		{
 		if(e.KeyData == Keys.Right && e.KeyData == Keys.Up)
			{
				Point x = pictureBox1.Location;
				pictureBox1.Location = new Point(pictureBox1.Location.X +2,pictureBox1.Location.Y-2);	
}
Pedro Rafael

Pedro Rafael

Responder

Posts

15/11/2010

Altieri Pereira

Ola, creio que da forma que esta testando, não seja possível mesmo. Pois não tem como e.KeyData ser igual a Keys.Right e Keys.Up ao mesmo tempo.


Verifique o exemplo: http://proto.layer51.com/d.aspx?f=1435 e veja se ajuda.


;) até mais.
Responder

17/11/2010

Vinicius Vieira

  Então dessa forma não é possível mesmo o que você pode verificar através dos evento keydown você faz uma lista das teclas que acionaram keydown, e quando esta mesma tecla acionar o keyup você retira da lista, entendeu? assim você consegue saber quais as teclas estão apertadas provavelmente terá que usar outra thread para intepretar o que está na lista entende?
Responder

16/03/2011

Alejandro González

int pUp = 0; int pRight = 0 ; private void Form1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Up && pUp == 0 ) pUp=1; if (e.KeyData == Keys.Right && pRight == 0) pRight = 1; if (e.KeyData != Keys.Right && e.KeyData != Keys.Up) pRight = pUp = 0; if (pRight == pUp && pUp == 1) Text = "Foram pressionadas as duas teclas"; else Text = "Nada interessante"; }
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar