B. *_*non 7 c# keyeventargs beep arrow-keys winforms
首席开发人员表示,当他使用我的应用程序时,当他通过方向箭头键在TableLayoutPanel上的TextBoxes之间移动时,他的键盘会发出蜂鸣声.
但是,我听不到这种听觉活动.
这是我的代码:
// 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;
}
}
Run Code Online (Sandbox Code Playgroud)
..他想也许我需要"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;
}
}
Run Code Online (Sandbox Code Playgroud)
......但他仍然听到了哔哔声(我没有).
他在阿拉斯加并使用Windows 7; 我在加利福尼亚并使用XP.我不知道是否存在某些组合/不匹配问题...
我知道这可能会让一些人感到震惊,但阿拉斯加/加利福尼亚的断线与此无关.我现在也听到了哔哔声,而且它不是来自箭头键.这是在TextBox中输入一个值然后,如果该文本框已经有一个字符,焦点将移动到下一个textBox并在那里输入值(这是我的代码导致这种情况发生).但令人恼火的哔哔声似乎是随机的 - 我没有想出它何时发出哔哔声的模式(有时会发出哔哔声,有时候却没有)......有没有人碰过这样的事情,或者更好的是,知道如何抑制哔哔声?我正在做的就是按下键盘上方的"1"或"2"键.
PreviewKeyDownEvent中无法像普通 KeyDown 事件那样处理/抑制 KeyEvent。文档建议将 PreviewKeyDownEventArgs.IsInputKey 属性设置为 true,以便处理 KeyDown 事件中通常不可用的按键。
从上面的链接,他们使用一个按钮作为示例:
某些按键(例如 TAB、RETURN、ESC 和箭头键)通常会被某些控件忽略,因为它们不被视为输入按键...通过处理 Button 的 PreviewKeyDown 事件并将 IsInputKey 属性设置为 true,您可以在按下箭头键时引发 KeyDown 事件。但是,如果您使用箭头键,焦点将不再移动到上一个或下一个控件。
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |