Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Möglichkeit zwischen langen und kurzen Tastendruck zu unterscheiden
Serun
myCSharp.de - Member



Dabei seit:
Beiträge: 16

Themenstarter:

Möglichkeit zwischen langen und kurzen Tastendruck zu unterscheiden

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Crone
myCSharp.de - Member



Dabei seit:
Beiträge: 168

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers