带有textBox KeyDown事件的C#WinForm应用程序中的Windows 10声音加载

时间:2018-10-03 16:03:33

标签: c# winforms textbox windows-10 system-sounds

C# WinForm桌面应用程序Form2中,它是我有textBox1_KeyDown事件的登录表单:

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
        LOGIN(); 
    } 
}

相同的LOGIN();函数在没有任何Form1的情况下加载Windows 10 sound,例如使用按钮,例如:

 private void button1_Click(object sender, EventArgs e) 
 { 
    LOGIN(); 
 } 

但是通过按下键盘上的Enter keytextBox1_KeyDown事件会以Form1的Windows 10声音加载Asterisk(在显示弹出警报时播放,例如警告消息)Default Beep声音,(出于多种原因播放,并在关闭活动窗口之前选择了父窗口),或者是Exclamation,其中 (根据What Are The Program Events That Are Included In A Sound Scheme?的说法(在您尝试执行OS不支持的操作时播放)

我不确定这三首歌听起来是一样的,或者是同一音轨,无论如何,我不知道如何在LOGIN();函数中通过键盘输入来避免这种声音,表单将以这种方式加载:

            Form1 objForm1 = new Form1();
            this.Hide();
            objForm1.Show();

任何指南,建议或示例都会有所帮助

1 个答案:

答案 0 :(得分:1)

执行此操作的几种方法,请检查: Stop the 'Ding' when pressing Enter

我认为最好的方法是设置Form.AcceptButton属性(设置为期望的按钮),而根本不对文本框的keydown进行编程,但是如果您不想这样做,也可以使用下面的代码:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        //DoYourLogic
        e.Handled = true;
        e.SuppressKeyPress = true;
      }
 }