C# 如何停止多个Ctrl+S直到保存过程完成
当我按下Ctrl+S保存详细信息并持续按下时,我需要输入客户详细信息。按键和向下键事件持续触发,导致重复记录输入。是否有一种方法可以在我的保存过程完成后才触发这些 我在blow link中发现了同样的问题 我已经检查了它的解决方案,但它对我不起作用。我必须按多次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
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键