我在Windows窗体中手动设置光标时出现错误声音

时间:2018-03-19 12:16:12

标签: c# visual-studio

我是C#的初学者,我制作了以下GUI(见截图)。在那里,想法是让用户输入ID。然后,用户按下回车键,光标自动定位在红色正方形的单元格中。此时程序运行正常。但是,当光标从文本框移动到数据网格视图时,会听到声音,就好像它是一个错误。

enter image description here

因此我想消除这种声音,我使用的代码如下所示。如果有人能帮助我,我将不胜感激

private void Form1_Load(object sender, EventArgs e) {

        dataGridView1_Konfiguration();
        //txtPerson => ID texteditor
        txtPerson.Focus();
        txtPerson.SelectionStart = txtPerson.Text.Length;

}

private void txtPerson_KeyPress(object sender, KeyPressEventArgs e){

        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)){    
                e.Handled = true;
        }
}


private void txtPerson_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter && txtPerson.Text == ""){

           MessageBox.Show("Bitte geben ein gültige Personalnummer !!");
        }
        else if (e.KeyCode == Keys.Enter && txtPerson.Text != ""){

           dataGridView1.Enabled = true;
           dataGridView1.Focus();
           dataGridView1.Rows[0].Cells[1].Selected = true;
    }
}

1 个答案:

答案 0 :(得分:1)

如果你只使用TextBox创建一个空的WinForms项目而没有别的东西,当你按回车键时你仍然会听到这个声音。我认为这与Form.AcceptButton属性以及事件被路由的位置有关,但我不确定。

在您的情况下,要删除声音,您可以在切换到单元格后进一步处理输入事件。你可以把这个

 e.SuppressKeyPress = true;

在你的txtPerson_KeyDown处理程序中。

整个代码段会显示如下:

    private void txtPerson_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter && txtPerson.Text == "")
        {

            MessageBox.Show("Bitte geben ein gültige Personalnummer !!");
        }
        else if (e.KeyCode == Keys.Enter && txtPerson.Text != "")
        {

            dataGridView1.Enabled = true;
            dataGridView1.Focus();
            dataGridView1.Rows[0].Cells[1].Selected = true;
            e.SuppressKeyPress = true;
        }
    }

我希望有所帮助!