2017-08-04 76 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; 
      } 
     } 

}

相關問題