C# 如何停止多个Ctrl+S直到保存过程完成

C# 如何停止多个Ctrl+S直到保存过程完成,c#,winforms,C#,Winforms,当我按下Ctrl+S保存详细信息并持续按下时,我需要输入客户详细信息。按键和向下键事件持续触发,导致重复记录输入。是否有一种方法可以在我的保存过程完成后才触发这些 我在blow link中发现了同样的问题 我已经检查了它的解决方案,但它对我不起作用。我必须按多次s键 这是我的密码: private void FrmAddBase_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e

当我按下Ctrl+S保存详细信息并持续按下时,我需要输入客户详细信息。按键和向下键事件持续触发,导致重复记录输入。是否有一种方法可以在我的保存过程完成后才触发这些

我在blow link中发现了同样的问题

我已经检查了它的解决方案,但它对我不起作用。我必须按多次s键

这是我的密码:

private void FrmAddBase_KeyDown(object sender, KeyEventArgs e)
    {
            if (e.Control && e.KeyCode == Keys.N)
            {
                if (btnAdd.Enabled)
                {
                    btnAdd_ItemClick(null, null);
                }
            }
            if (e.Control && e.KeyCode == Keys.S)
            {
                if (btnSave.Enabled)
                {
                    btnSave_ItemClick(null, null);
                }
            }

正如一条评论所指出的,您只需添加一个标志,如下所示:

bool IsSaving;
private void FrmAddBase_KeyDown(object sender, KeyEventArgs e)
{
        if (e.Control && e.KeyCode == Keys.N)
        {
            if (btnAdd.Enabled)
            {
                btnAdd_ItemClick(null, null);
            }
        }
        if (e.Control && e.KeyCode == Keys.S)
        {
            if (btnSave.Enabled)
            {
                if(IsSaving) return;
                IsSaving = true;
                //I guess this is the save process, and its not threaded
                btnSave_ItemClick(null, null);
                IsSaving = false;
            }
        }

}

添加标志IsSaving?您可以做的是在触发事件时取消订阅事件按键。然后在处理事件后再次订阅。您似乎没有实现您所访问的链接中的任何答案gave@o_weisman我已经检查了它的解决方案,但我必须按多次s键