Laden...

Möglichkeit zwischen langen und kurzen Tastendruck zu unterscheiden

Erstellt von Serun vor 8 Jahren Letzter Beitrag vor 8 Jahren 820 Views
S
Serun Themenstarter:in
16 Beiträge seit 2015
vor 8 Jahren
Möglichkeit zwischen langen und kurzen Tastendruck zu unterscheiden

Hallo liebe Community,

ich habe ein kleines Problem, welches ich einfach nicht zu lösen bekomme.

Sagen wir mal, ich erzeuge ein Objekt der Klasse PictureBox, dessen Bitmap einen Laserstrahl.png hat.

Ich möchte den Laser aktivieren und deaktivieren, indem ich ihn einmal sichtbar und wieder unsichtbar mache.

Was ich zustande bekomme, ist, wenn ich bei dem KeyDown-Event

myLaserstrahl.Visible = true;

und bei dem KeyUp-Event

myLaserstrahl.Visible = false;

mache, dann erscheint der Laserstrahl, wenn ich die entsprechende Taste (z. B. Keys.Enter) nach unten drücke und wenn ich sie wieder los lasse, dann wird der Laserstrahl unsichtbar.

Gut, das ist schon einmal super.

Was ich einfach nicht zustande bekomme und gerne erreichen möchte, ist, wenn ich die entsprechende Taste (z. B. Keys.Enter) gedrückt halte, z. B. für fünf Sekunden, dann bleibt mir der Laserstrahl logischerweise sichtbar, weil die Taste ja nach unten gedrückt wurde.

Ich möchte es aber so, dass, wenn ich eine Taste eine bestimmte Zeit drücke, dass der Laserstrahl

myLaserstrahl.Visible = false;

wird, obwohl ich die Maustaste noch gedrückt habe (KeyDown) und bei KeyUp noch nicht angekommen bin.

Was ich sagen möchte. Es sollte so sein:

Egal, ob ich die Taste lange oder nur kurz drücke, egal welcher Zeitraum beim Drücken entsteht, soll er immer das gleiche Muster zeigen, indem bspw. das

myLaserstrahl.Visible = false;

nach einer Sekunde eintritt.

Mein Code:


private void laserstrahlAppearsDisappears_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{         
            this.myLaserstrahl.Visible = true;
}
}


private void laserstrahlAppearsDisappears_KeyUp(object sender, KeyEventArgs e)
{
            this.myLaserstrahl.Visible = false;
}

Also, was kann ich tun?

Ich freue mich auf eure Antworten und Codebeispiele.

LG Serun

C
168 Beiträge seit 2010
vor 8 Jahren

Nimm einfach ein Timer den du in KeyDown event startest.

Real programmers don't comment their code - it was hard to write, it should be hard to understand.