C# 确保在按住键时只执行一次语句。
如果按住numpad上的5键,它将继续在KeyDown事件处理程序中执行一条语句。即使我按下键,如何确保语句只执行一次C# 确保在按住键时只执行一次语句。,c#,windows,winforms,keyboard,C#,Windows,Winforms,Keyboard,如果按住numpad上的5键,它将继续在KeyDown事件处理程序中执行一条语句。即使我按下键,如何确保语句只执行一次 private void form_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode == Keys.NumPad5) { dados.enviar("f"); //I want this to run only once! } } 谢谢你的
private void form_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.NumPad5)
{
dados.enviar("f"); //I want this to run only once!
}
}
谢谢你的关注
private void form_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.NumPad5)
{
dados.enviar("f"); //I want this to run only once!
}
}
您可以在向下键上设置标志,在向上键上重置标志
private void form_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.NumPad5)
{
dados.enviar("f"); //I want this to run only once!
}
}
private bool isPressed = false;
public Form1()
{
InitializeComponent();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.B && !isPressed )
{
isPressed = true;
// do work
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (isPressed )
isPressed = false;
}
您应该使用IsRepeat标志检查是否是第一次按下按键
private void form_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.NumPad5)
{
dados.enviar("f"); //I want this to run only once!
}
}
if (e.KeyCode == Keys.NumPad5 && !e.IsRepeat)