Når du skal læse mere end én key af gangen må du gribe fat i GetAsyncKeyState!
Jeg har brygget dette lille eksempel til dig som viser hvorledes du kan læse dine navigationstaster.
Eksemplet enabler / disabler fire labels som indikerer de enkelte retninger. Jeg har undladt disse (da de er erklæret i designer filen)
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
// Dette eksempel ignorerer keys i modsatte retning! (men man kan naturligvis gøre hvad man har lyst til)
bool left = GetAsyncKeyState((int)System.Windows.Forms.Keys.Left) < 0;
bool right = GetAsyncKeyState((int)System.Windows.Forms.Keys.Right) < 0;
bool up = GetAsyncKeyState((int)System.Windows.Forms.Keys.Up) < 0;
bool down = GetAsyncKeyState((int)System.Windows.Forms.Keys.Down) < 0;
this.Update(left, right, up, down);
}
[DllImport("user32.dll")]
public static extern int GetAsyncKeyState(int vkey);
private void Update(bool left, bool right, bool up, bool down)
{
this.labelLeft.Enabled = left;
this.labelRight.Enabled = right;
this.labelUp.Enabled = up;
this.labelDown.Enabled = down;
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
this.Update(false, false, false, false);
}
private void Form1_Load(object sender, EventArgs e)
{
this.Update(false, false, false, false);
}
}
}
Indlæg senest redigeret d. 07.09.2006 09:23 af Bruger #10478