当我在文本框中按 Enter 键时发出恼人的哔哔声

Posted

技术标签:

【中文标题】当我在文本框中按 Enter 键时发出恼人的哔哔声【英文标题】:Annoying beep when I hit enter in a textbox 【发布时间】:2013-12-28 16:50:40 【问题描述】:

当用户在文本框中按 Enter 时,我试图让一些事情发生,并且它可以工作,但是当我这样做时,它会发出非常烦人的 DING windows 错误声音。我查看了我的问题,显然在内容之前添加了e.SuppressKeyPress = true;,在内容之后添加了e.Handled = true;,但我的程序仍然发出声音。这是我正在使用的代码:

private void textBox1_KeyUp(object sender, KeyEventArgs e)

    e.SuppressKeyPress = true;
    if (e.KeyCode == Keys.Enter)
    
        // A bunch of stuff goes here that I want to 
        // happen when the user hits enter               
    
    e.Handled = true;

我做错了吗?这是其他人说你必须做的,但由于某种原因它对我不起作用......

谢谢!

【问题讨论】:

向上对鼠标有好处。羽绒对键盘有好处。叮!如果你弄错了。 【参考方案1】:

您需要处理KeyDown,而不是KeyUp,以抑制KeyPress 事件。 KeyDown 文档解释了原因,因为它列出了事件的顺序:

按键 按键 KeyUp

在您设置e.SupressKeyPress 时,KeyPress 事件已经发生。

【讨论】:

敬畏,我现在有大约 50 个实例要更改为 keydown xD 谢谢,现在我知道出了什么问题! @Nathan:全局替换,或者像 sublime text 这样的编辑器可能会有所帮助:) 全局替换能否真正改变哪个事件的作用?我通过双击控件事件菜单中的“Keyup”并输入创建的方法来创建事件。 @Nathan 是的,只要您包含 .designer.cs 文件,因为这是代码中出现挂钩的地方。【参考方案2】:

可以试试这个!

private void textBox1_KeyUp(object sender, KeyEventArgs e)

    e.SuppressKeyPress = true;
    if (e.KeyCode == (char)Keys.Enter)
    
        // A bunch of stuff goes here that I want to 
        // happen when the user hits enter         
        e.Handled = true;      
      

【讨论】:

你应该改变你的答案,使它不仅仅是一个代码 sn-p。尝试解释 sn-p 正在做什么并链接到一些相关资源。【参考方案3】:

你所做的并没有错,只是将 (e.supperkeypress = ture) 放在 if 语句中。

private void textBox1_KeyUp(object sender, KeyEventArgs e)


    if (e.KeyCode == Keys.Enter)
    
        e.SuppressKeyPress = true;
        // A bunch of stuff goes here that I want to 
        // happen when the user hits enter               
    
    e.Handled = true;

【讨论】:

以上是关于当我在文本框中按 Enter 键时发出恼人的哔哔声的主要内容,如果未能解决你的问题,请参考以下文章

当我们从文本框中按 Enter 键时,在单个 jQuery 方法中处理多个操作

在 VC6-MFC 中按 ENTER 键时的 TAB 效果

从html输入文本框中按回车键时如何防止回发?

使用 OnKeyUp 在 TextBox 中按下 Enter 时避免 Windows 'Ding'

无法在文本框 keydown 事件上禁用哔声

使用 ffmpeg 发出部分音频文件的哔哔声