Laden...

keyboard events

Erstellt von malcolm vor 19 Jahren Letzter Beitrag vor 19 Jahren 3.207 Views
M
malcolm Themenstarter:in
12 Beiträge seit 2005
vor 19 Jahren
keyboard events

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...

49.485 Beiträge seit 2005
vor 19 Jahren

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

M
malcolm Themenstarter:in
12 Beiträge seit 2005
vor 19 Jahren
komisch

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...

M
malcolm Themenstarter:in
12 Beiträge seit 2005
vor 19 Jahren

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...

T
8 Beiträge seit 2005
vor 19 Jahren

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! 😉

M
malcolm Themenstarter:in
12 Beiträge seit 2005
vor 19 Jahren
missverständnis

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...

T
8 Beiträge seit 2005
vor 19 Jahren

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! 😉

M
malcolm Themenstarter:in
12 Beiträge seit 2005
vor 19 Jahren

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...

T
8 Beiträge seit 2005
vor 19 Jahren

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! 😉

M
malcolm Themenstarter:in
12 Beiträge seit 2005
vor 19 Jahren

ahhh.. nicht dumm 🙂

Wo wir sind herrscht Chaos. Aber wir können ja nicht überall sein...

M
malcolm Themenstarter:in
12 Beiträge seit 2005
vor 19 Jahren

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...

T
8 Beiträge seit 2005
vor 19 Jahren

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! 😉