10

ユーザーが Windows フォームのテキスト ボックスでKeyUpイベントを入力すると、Windows はビープ音または dingを鳴らします。これが発生する理由と、これを回避する方法を特定できませんでした。

どんな助けでも大歓迎です。

4

6 に答える 6

13

音を取り除くための実際の解決策:

private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        e.SuppressKeyPress = true;
    }
}
于 2013-02-10T13:35:04.067 に答える
9

これは、次の組み合わせによって引き起こされると思います。

  • MultiLine = false
  • フォームにデフォルトのボタンがない

単一行のテキストボックスはエンターキーをデフォルトのボタンに転送するためです。デフォルトのボタンが見つからない場合、ディンが生成されます。

于 2011-07-12T13:23:39.967 に答える
4

実際の答えは次のとおりです。

    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

これはキープレスを食べ、音を防ぎます。

于 2013-01-30T14:30:30.107 に答える
1

解決策を探して数時間後、回避策を見つけましたが、この問題の実際の解決策ではありません。現在、代わりに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();
    }
}

そして、すべての開発者への有用な提案:音をミュートしながらアプリケーションをテストしないでください。;-)

于 2011-07-12T09:39:34.947 に答える
0

上記の解決策はどれもうまくいきませんでした...しかし、これが私の簡単な解決策です!
アプリで 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 が聞こえなくなります!

于 2013-08-20T17:37:05.367 に答える