C# 使用Application.DoEvents()时如何抑制叮当声
在文本框上使用KeyDown事件时,如果要使用命令Application.DoEvents(),是否有方法抑制叮当声?我使用此命令刷新屏幕(否则在函数DoSomething()完成之前不会有任何可见的更改)C# 使用Application.DoEvents()时如何抑制叮当声,c#,winforms,keydown,C#,Winforms,Keydown,在文本框上使用KeyDown事件时,如果要使用命令Application.DoEvents(),是否有方法抑制叮当声?我使用此命令刷新屏幕(否则在函数DoSomething()完成之前不会有任何可见的更改) void TbTextKeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { e.Handled = true; e.Su
void TbTextKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return) {
e.Handled = true;
e.SuppressKeyPress = true;
Application.DoEvents(); // this command triggers the Ding
DoSomething(); // this function may take a few seconds to complete
}
}
Windows配置面板/声音/系统?谢谢,但如果可能的话,我希望不要干扰系统声音。
async void TbTextKeyDown
和wait Task.Run(()=>DoSomething())
不带DoEvents()
e.SuppressKeyPress无法工作当您执行此操作时,DoEvents会在按键被抑制之前触发KeyPress事件。这只是DoEvents导致的许多重入问题中的另一个。不要这样做。您没有留下足够的面包屑来猜测到底需要更新什么,请从这个开始。Update()。此外,您只需要e.SuppressKeyPress=true;
。此属性还可以在内部设置e.Handled=true;
。您不应该在KeyDown
事件中运行花费那么多时间来完成的方法。您应该提及此代码应该执行的任务。同步方法将阻止用户键入,异步方法将阻止用户键入造成麻烦的是,你需要先处理上一个问题,然后再开始另一个问题,最终等等。