Ich bin im Allgemeinen ein VB-Typ, aber dies scheint für mich als Demo-Code zu arbeiten, das Formular selbst als Eingangsquelle:
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;
}
}
}
}
ich denke, die Logik ein wenig lückenhaft wird, wenn Sie‘ Sie halten mehrere Tasten gleichzeitig gedrückt, aber das scheint nur das Ereignis auszulösen, das von der letzten Taste stammt, die gedrückt wurde. Daher glaube ich nicht, dass dies ein Problem wird.
Ich habe dies in einer TextBox in VB getestet, und es hat gut funktioniert. Ich war mir nicht sicher, auf die Erbschaftskonventionen, die ich in C# folgen sollte, also verließ ich es als eine gerade Form für diese Antwort.
Entschuldigung für alle Code-Formatierungsfehler, dies ist nicht meine übliche Sprache.
Können Sie stattdessen das KeyUp-Ereignis verwenden? – Groo
Siehe die Antwort von Stevo3000. Danke –