Je suis généralement un type VB, mais cela semble fonctionner pour moi comme code de démonstration, en utilisant le formulaire lui-même comme la source d'entrée:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private bool _keyHeld;
public Form1()
{
InitializeComponent();
this.KeyUp += new KeyEventHandler(Form1_KeyUp);
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
this._keyHeld = false;
}
void Form1_KeyUp(object sender, KeyEventArgs e)
{
this._keyHeld = false;
}
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (!this._keyHeld)
{
this._keyHeld = true;
if (this.BackColor == Control.DefaultBackColor)
{
this.BackColor = Color.Red;
}
else
{
this.BackColor = Control.DefaultBackColor;
}
}
else
{
e.Handled = true;
}
}
}
}
Je pense que la logique est un peu peu précis si vous Si vous maintenez plusieurs touches à la fois, mais cela semble déclencher l'événement à partir de la dernière touche qui a été pressée de toute façon, donc je ne pense pas que cela devienne un problème.
J'ai testé cela dans un TextBox dans VB, et cela a fonctionné correctement. Je n'étais pas sûr des conventions d'héritage que je devrais suivre dans C#, donc je l'ai laissé comme une forme droite pour cette réponse.
Toutes mes excuses pour toute erreur grossière de formatage de code, encore une fois, ce n'est pas ma langue habituelle.
Pouvez-vous utiliser l'événement KeyUp à la place? – Groo
Voir le commentaire sur la réponse de Stevo3000. Merci –