8

でEnterキーを押したときに鳴るビープ音を無効にしたいtextbox。私のKeyDownイベントは:

 private void textBox_Zakljucak_KeyDown(object sender, KeyEventArgs e)
        {

            if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Tab))
            {
                Parent.SelectNextControl(textBox_Zakljucak, true, true, true, true);
            }
            else if ((e.KeyCode == Keys.Back))
            {
                textBox_Zakljucak.Select(textBox_Zakljucak.Text.Length, 0);
            }
            else if (!Regex.IsMatch(textBox_Zakljucak.Text, @"^[0-9.-]+$"))
            {
                textBox_Zakljucak.Clear();
                textBox_Zakljucak.Select(textBox_Zakljucak.Text.Length, 0);
            }
    }
4

7 に答える 7

29

KeyPressed イベントが生成されないようにする必要があります。これがビープ音です。これには、SuppressKeyPress プロパティを true に設定する必要があります。次のようにします。

        if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Tab))
        {
            Parent.SelectNextControl(textBox_Zakljucak, true, true, true, true);
            e.Handled = e.SuppressKeyPress = true;
        }
于 2012-12-19T13:37:54.430 に答える
4

イベントが Winforms または WPF/Silverlight でバブルアップしないようにする場合は、イベント ハンドラー内で fromを設定e.Handledする必要があります。true

これは、イベントを実際に満足のいくように処理し、問題のイベントをこれ以上処理したくない場合にのみ行ってください。

于 2012-12-19T12:57:36.047 に答える
2

これは私にとってはうまくいきます。

private void txtTextbox_KeyDown(object sender, KeyEventArgs e)
{
    //do somthing

    if(e.KeyCode==Keys.Enter)
    {
        e.Handled=true;
        e.SuppressKeyPress=true;
    }
}

private void txtTextbox_KeyUp(object sender, KeyEventArgs e)
{
    e.Handled=false;
    e.SuppressKeyPress=false;
}
于 2015-07-03T14:29:04.880 に答える
1
    private void txtMessage_KeyDown(object sender, KeyEventArgs e)
    {

        if (e.KeyCode == Keys.Enter)
        {
            e.SuppressKeyPress = true;
            _sendMessage.PerformClick();
        } 
    }       
于 2016-08-08T13:11:45.160 に答える