Что вызывает системный звуковой сигнал?


Это то, что я использую, чтобы позволить кнопке enter начать поиск. Он работает, но вызывает системный звуковой сигнал. Я понятия не имею, почему.

    private void searchbox_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            searchbutton.PerformClick();
        }
        else
        {
            //Run.
        }

    }

Это происходит, как только я нажимаю enter, а не какую-то другую строку в коде. Мысли о том, чего мне не хватает?

Вот searchbutton_Click:

    private void searchbutton_Click(object sender, EventArgs e)
    {
        var searchvar = searchbox.Text;
        SqlParameter var1 = new SqlParameter(@"var1", SqlDbType.Text);
        var1.Value = "%" + searchvar + "%";
        var conn = new SqlConnection("Data Source=TX-MANAGER;Initial Catalog=Contacts;Integrated Security=True");
        var comm = new SqlCommand(@"SELECT [Name ID], First, Last, Address, City, State, ZIP FROM contacts WHERE (First LIKE @var1) OR (Last LIKE @var1)", conn);
        if (checkBox1.Checked == true)
        {
            comm.CommandText += "ORDER BY ZIP";
        }
        else
        {
            //Run.
        }
        try
        {
            comm.Parameters.Add(var1);
            conn.Open();
            comm.CommandType = CommandType.Text;
            SqlDataAdapter da = new SqlDataAdapter(comm);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource = dt;
            conn.Close();
        }
        catch (Exception e1)
        {
            display_box.Text = e1.ToString();
            tabControl1.Focus();
        }
        finally
        {
            int rowcount = dataGridView1.RowCount - 1;
            count.Text = rowcount.ToString();
            tabControl1.SelectedTab = tabPage2;
        }

    }
2 4

2 ответа:

Вы можете попробовать добавить e.Handled = true; к событию KeyPressed для вашего TextBox.

Обычно, если ваш Form не имеет своего AcceptButton набора свойств, при нажатии Enter внутри TextBox воспроизводится системный звуковой сигнал. Звуковой сигнал указывает на то, что для вашего Form нет кнопки по умолчанию.

Добавьте следующий обработчик событий (в дополнение к KeyUp):

private void searchbox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '\r')
        e.Handled = true;
}

То есть подписаться на событие KeyPress и при нажатии Enter установить e.Handled в true. Я только что проверил это на своей машине, и она сработала; она удалила звуковой сигнал.