n abend.
möchte einen eventhandler drauf abrichten, dass er eine funktion ausführt, wenn eine cursortaste, zb links, gedrückt wird.
hab das so gemacht:
this.KeyPress += new KeyPressEventHandler(OnKeyPress);
this.KeyPreview = true;
void OnKeyPress(object sender, KeyPressEventArgs e){
char key = e.KeyChar;
}
gut, jetzt wäre es ja einfach, wenn ich wissen würde, was die cursortasten für codes haben. oder hat jemand eine andere möglichkeit, das irgendwie zu machen?
thx im voraus, mfg, malcolm
ps.: habe gehört, dass C# in dem bereich den ASCII code verwendet. kann das stimmen?
Wo wir sind herrscht Chaos. Aber wir können ja nicht überall sein...
Hallo malcolm,
ich denke mit Control.KeyDown bzw. Control.KeyUp bist du besser bedient als mit KeyPress. In den KeyEventArgs (statt KeyPressEventArgs) gibt es KeyData. Darin findest du, was du brauchst (Keys-Enumeration).
HTH
herbivore
ok, soweit so gut, schaut jetzt so aus:
void OnKeyPress(object sender, KeyEventArgs e){
switch(e.KeyData){
case System.Windows.Forms.Keys.Left:
s.Direction = "left";
break;
.. und so weiter. lustigerweise: wenn ich bei case angebe: System.Windows.Forms.Keys.A (als bsp), funktioniert das tadellos. nur bei cursortasten klappt das anscheinend nicht. verwende ich die falschen codes, oder muss ich muss ich etwas berückstichtigen.
bedanke mich mal schon im voraus, lg, malcolm
Wo wir sind herrscht Chaos. Aber wir können ja nicht überall sein...
PS.: um das "nicht klappen" genauer zu definieren: ich kann noch so lange auf die taste hämmern, und s.Direction wird nicht geändert.
Wo wir sind herrscht Chaos. Aber wir können ja nicht überall sein...
hi malcolm...
die mausereignisse werden in c# von den tastaturereignissen unterscheiden..
dein code müsste für die maus wohl folgendermassen heissen:
this.MouseUp += new MouseEventHandler(OnMouseUp);
protected override void OnMouseUp(MouseEventArgs e)
{
MessageBox.Show(e.Button);
// in deinem fall auszutauschen gegen irgendwas anderes...
}
// signaturplatz zu vermieten! 😉
sorry, missverständnis:
ich möchte schon die keyboard ereignisse (cursortasten), nicht die von der maus.
Wo wir sind herrscht Chaos. Aber wir können ja nicht überall sein...
uuuups... missverstanden...sorry...
dann brauchst du natürlich nur den keycode, den du dir ja einmalig mit KeyCode bzw. KeyData ausgeben lassen kannst, umd dann die tastendrucke mit dem code zu vergleichen...
// signaturplatz zu vermieten! 😉
ja, soweit sogut, nur wie ist der code für die cursor tasten? left, right, up, down?
Wo wir sind herrscht Chaos. Aber wir können ja nicht überall sein...
this.KeyUp += new KeyEventHandler(OnKeyUp);
public void OnKeyUp(object sender, KeyEventArgs e)
{
MessageBox.Show(e.KeyCode.ToString(), "Key pressed!");
}
lass den computer die arbeit für dich machen! 😁
einbauen und die gewünschte taste drücken... dan gibt das programm dir per messagebox den keycode aus ;o)
grüße
tribal
// signaturplatz zu vermieten! 😉
ahhh.. nicht dumm 🙂
Wo wir sind herrscht Chaos. Aber wir können ja nicht überall sein...
danke an alle, es funktioniert tadellos. lustigerweise nur mit KeyUp, und nicht mit KeyDown, aber das ist nicht so wichtig.
MERCI, cya, malcolm
Wo wir sind herrscht Chaos. Aber wir können ja nicht überall sein...
das freut doch ;o)
und denk nie mehr nach als du musst, sondern folter den compi, bis er ausspuckt was du willst! ;o) (meine devise)
// signaturplatz zu vermieten! 😉