C# - detectar duas teclas ao mesmo tempo
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
Curtidas 0
Respostas
Altieri Pereira
06/11/2010
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.
Verifique o exemplo: http://proto.layer51.com/d.aspx?f=1435 e veja se ajuda.
;) até mais.
GOSTEI 0
Vinicius Vieira
06/11/2010
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?
GOSTEI 0
Alejandro González
06/11/2010
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";
}
GOSTEI 0