2017-08-04 95 views
0

我有形式进入客户的详细信息,当我按下按Ctrl + 小号保存细节,按住它的按键和键按下事件连续触发导致重复的记录条目。有没有办法让我的保存过程完成后才会触发这些火灾。如何停止多Ctrl + S键,直到保存过程完成

我发现同样的问题在打击链接 how not to allow multiple keystokes received at one key press?

我必须检查它的解决方案,但它不是我的工作,我必须按多时间小号 KEY

这里是我的代码:

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); 
       } 
      } 
+1

添加国家IsSaving? – Reniuz

+0

您可以做的是在事件触发时取消订阅事件(KeyDown)。然后在处理事件后再次订阅。 – CCamilo

+0

你似乎没有在你给的链接中实现任何答案 –

回答

1

正如一条评论指出,你可以添加一个标志,像这样:

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; 
      } 
     } 

}

相关问题