C# 如果我只按一次键怎么办

C# 如果我只按一次键怎么办,c#,C#,我想知道如何在这个代码中只发送一次 我尝试使用线程延迟发送。sleep是因为当我按下该键时,它会发送多次,但我只想在每次按键时发送一次 我试图打破,但这切断了if,它只发送了一次钥匙,然后再也不发送了 有没有办法做我想做的事?谢谢 编辑:对不起,我忘了放电话了。 按住该键只需单击一次,当再次按下时,我需要再次发送内容。如果我正确理解了您的问题,类似这样的解决方案应该有效: while true { if (checkBox1.Checked & KKEY == "CapsLo

我想知道如何在这个代码中只发送一次

我尝试使用
线程延迟发送。sleep
是因为当我按下该键时,它会发送多次,但我只想在每次按键时发送一次

我试图打破,但这切断了if,它只发送了一次钥匙,然后再也不发送了

有没有办法做我想做的事?谢谢

编辑:对不起,我忘了放电话了。
按住该键只需单击一次,当再次按下时,我需要再次发送内容。

如果我正确理解了您的问题,类似这样的解决方案应该有效:

while true
{
 if (checkBox1.Checked & KKEY == "CapsLock")
  {
    if (sim.InputDeviceState.IsKeyDown(VirtualKeyCode.CAPITAL))
       {
        (Send something)
        Thread.Sleep(100);
       }
   }
 }

我对“sim”不太熟悉,但您可以根据需要修改代码。

定义“每次点击1次”中的“点击”的确切含义。如果在按键释放前只需点击一次键,则检测在此期间是否发生了按键操作。是,对不起。按住键应该是一次点击,当再次按下时,我需要再次发送一些东西。我很抱歉,我忘了把时间。我试过了,但程序仍然在做同样的事情。
bool keyPressed = false;
if (checkBox1.Checked & KKEY == "CapsLock")
{
    if (sim.InputDeviceState.IsKeyDown(VirtualKeyCode.CAPITAL) && !keyPressed)
    {
        keyPressed = true;
        (Send something)
                    
    }
    if (sim.InputDeviceState.IsKeyUp(VirtualKeyCode.CAPITAL))
    {
        keyPressed = false;            
    }
}