确保在按住某个键时只执行一次语句

本文关键字:执行 语句 一次 确保 | 更新日期: 2023-09-27 18:24:07

如果按住数字键盘上的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 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;
    }
bool alreadyPressed = false;
...
if (e.KeyCode == Keys.NumPad5 && ! alreadyPressed)
{
    alreadyPressed = true;
    ...

您应该使用IsRepeat标志来检查这是否是第一次按键。

if (e.KeyCode == Keys.NumPad5 && !e.IsRepeat)