我是C#的初学者,我制作了以下GUI(见截图)。在那里,想法是让用户输入ID。然后,用户按下回车键,光标自动定位在红色正方形的单元格中。此时程序运行正常。但是,当光标从文本框移动到数据网格视图时,会听到声音,就好像它是一个错误。
因此我想消除这种声音,我使用的代码如下所示。如果有人能帮助我,我将不胜感激
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;
}
}
答案 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;
}
}
我希望有所帮助!