有些键盘比其他键盘更有趣吗?
主要开发人员表示,当他使用我的应用程序时,他的键盘在通过方向箭头键在TableLayoutPanel上的文本框之间移动时发出嘟嘟声。
但是,我听不到这样的听觉活动。
这是我的代码:
// 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上))?
UPDATE
我现在有这个代码:
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。 我不知道是否有某种组合/不匹配存在问题...
再次更新
我知道这可能会让一些人感到震惊,但阿拉斯加/加利福尼亚州的断线与此无关。 我现在也听到了哔哔声,它不是来自箭头键。 当文本框中输入一个值时,如果该文本框中已经有一个字符,焦点将移动到下一个文本框,并且该值被输入(这是导致这种情况发生的代码)。 但刺激的哔哔声似乎是随机的 - 我还没有弄清楚它发出哔哔声时的模式(有时它确实有时不会)......有没有人跑过类似的东西,或者更好的是,知道如何抑制嘟嘟声? 我所做的只是按下键盘上方的“1”或“2”键。
在正常的KeyDown事件中,PreviewKeyDownEvent没有办法处理/压住KeyEvent。 文档建议将PreviewKeyDownEventArgs.IsInputKey属性设置为true,以便处理在KeyDown事件中通常不可用的按键。
从上面的链接中,他们使用一个按钮作为示例:
某些按键(如TAB,RETURN,ESC和箭头键)通常会被某些控件忽略,因为它们不被视为输入按键...通过处理Button的PreviewKeyDown事件并将IsInputKey属性设置为true,您可以在按下箭头键时提高KeyDown事件。 但是,如果您处理箭头键,焦点将不再移动到上一个或下一个控件。
尝试这个:
e.SuppressKeyPress = true;
链接地址: http://www.djcxy.com/p/59583.html
上一篇: Are some keyboards more loquacious than others?
下一篇: How to refresh cache of Amazon S3 Storage for static webpage?