首席开发人员说,当他使用我的应用程序时,当他通过方向箭头键在 TableLayoutPanel 上的 TextBox 之间移动时,他的键盘会发出哔哔声。
但是,我没有听到这样的听觉活动。
这是我的代码:
// Had to intercept Up and Down arrows from Windows
private void textBoxPlatypi_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
TextBox tb = (TextBox)sender;
if (e.KeyCode.Equals(Keys.Up)) {
SetFocusOneRowUp(tb.Name);
return;
}
if (e.KeyCode.Equals(Keys.Down)) {
SetFocusOneRowDown(tb.Name);
return;
}
}
private void textBoxPlatypi_KeyDown(object sender, KeyEventArgs e) {
TextBox tb = (TextBox)sender;
if (e.KeyCode.Equals(Keys.Left)) {
SetFocusOneColumnBack(tb.Name);
e.Handled = true;
return;
}
if (e.KeyCode.Equals(Keys.Right)) {
SetFocusOneColumnForward(tb.Name);
e.Handled = true;
return;
}
}
..他认为我可能需要“e.Handled”,但这在 PreviewKeyDown 事件中不可用。
有没有办法抑制哔哔声(这显然只发生在某些键盘或特定设置上(他使用的是 Windows7,我还在 XP 上))?
更新
我现在有这个代码:
private void textBoxPlatypus1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
switch (e.KeyCode) {
case Keys.Down:
case Keys.Up:
e.IsInputKey = true;
break;
}
}
private void textBoxPlatypus1_KeyDown(object sender, KeyEventArgs e) {
TextBox tb = (TextBox)sender;
if (e.KeyCode.Equals(Keys.Up)) {
SetFocusOneRowUp(tb.Name);
e.Handled = true;
return;
}
if (e.KeyCode.Equals(Keys.Down)) {
SetFocusOneRowDown(tb.Name);
e.Handled = true;
return;
}
if (e.KeyCode.Equals(Keys.Left)) {
SetFocusOneColumnBack(tb.Name);
e.Handled = true;
return;
}
if (e.KeyCode.Equals(Keys.Right)) {
SetFocusOneColumnForward(tb.Name);
e.Handled = true;
return;
}
}
...但他仍然听到哔哔声(我没有)。
他在阿拉斯加并使用 Windows 7;我在加利福尼亚并使用 XP。我不知道是否存在某种组合/不匹配问题......
再次更新
我知道这可能会让一些人感到震惊,但阿拉斯加/加利福尼亚的断线与此无关。我现在也听到哔哔声,而且不是来自箭头键。当在 TextBox 中输入一个值,然后,如果该文本框已经有一个字符,焦点将移至下一个文本框并在那里输入值(这是我的代码导致这种情况发生)。但是恼人的哔哔声似乎是随机的——我还没有弄清楚哔哔声的模式(有时会,有时不会)......有没有人遇到过类似的事情,或者,更好的是,知道如何抑制蜂鸣声?我所做的只是按下键盘上方的“1”或“2”键。