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