ユーザーが Windows フォームのテキスト ボックスでKeyUpイベントを入力すると、Windows はビープ音または dingを鳴らします。これが発生する理由と、これを回避する方法を特定できませんでした。
どんな助けでも大歓迎です。
音を取り除くための実際の解決策:
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress = true;
}
}
これは、次の組み合わせによって引き起こされると思います。
MultiLine = false
単一行のテキストボックスはエンターキーをデフォルトのボタンに転送するためです。デフォルトのボタンが見つからない場合、ディンが生成されます。
実際の答えは次のとおりです。
Private Sub myTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles myTextBox.KeyPress
If Asc(e.KeyChar) = 13 Then
e.Handled = True
End If
End Sub
これはキープレスを食べ、音を防ぎます。
解決策を探して数時間後、回避策を見つけましたが、この問題の実際の解決策ではありません。現在、代わりにKeyDownを使用しています。
private void tbSearch_KeyDown( object sender, KeyEventArgs e )
{
if ( e.KeyCode == Keys.Enter )
{
e.Handled = true;
// Call Button event
//btnSearch_Click( sender, EventArgs.Empty );
// cleaner code. Thanks to Hans.
btnSearch.PerformClick();
}
}
そして、すべての開発者への有用な提案:音をミュートしながらアプリケーションをテストしないでください。;-)
上記の解決策はどれもうまくいきませんでした...しかし、これが私の簡単な解決策です!
アプリで Acceptbutton が不要になった場合にのみ機能します。
private void txtPassword_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) { cmdLogin.PerformClick(); }
}
private void txtPassword_Enter(object sender, EventArgs e)
{
this.Acceptbutton = this.cmdLogin;
}
private void txtPassword_Leave(object sender, EventArgs e)
{
this.Acceptbutton = Null;
}
このようにして、'Enter' が押されたときにフォーカスのある特定のテキストボックスで ping が聞こえなくなります!