有些键盘比其他键盘更健谈吗?
Posted
技术标签:
【中文标题】有些键盘比其他键盘更健谈吗?【英文标题】:Are some keyboards more loquacious than others? 【发布时间】:2012-05-18 23:25:56 【问题描述】:首席开发人员说,当他使用我的应用程序时,当他通过方向箭头键在 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”键。
【问题讨论】:
真是个好问题!我可能只是因为我一直在读坏书而感到厌倦,但这真的给我留下了深刻的印象。你选择了一个聪明但相对描述性的标题,实际上让我微笑。您已经简洁准确地描述了您的问题,并且您已包含相关代码以用于复制目的。这值得比我更多的支持。 【参考方案1】:PreviewKeyDownEvent 无法像正常的 KeyDown 事件那样处理/抑制 KeyEvent。文档建议将 PreviewKeyDownEventArgs.IsInputKey 属性设置为 true,以处理 KeyDown 事件中通常不可用的按键。
在上面的链接中,他们以按钮为例:
某些按键(例如 TAB、RETURN、ESC 和箭头键)通常会被某些控件忽略,因为它们不被视为输入按键...通过处理 Button 的 PreviewKeyDown 事件并设置 IsInputKey 属性为 true,您可以在按下箭头键时引发 KeyDown 事件。但是,如果您处理箭头键,焦点将不再移动到上一个或下一个控件。
【讨论】:
谢谢;正如您所提到的,我将考虑更改我的 PreviewKeyDown 事件;但是,我的代码可以按原样工作。只是想让键盘“安静”一下。 @Clay 我知道它会起作用,但是由于您需要停止击键的传播,因此您无法在 PreviewKeyDown 事件中选择【参考方案2】:试试this:
e.SuppressKeyPress = true;
【讨论】:
那不是PreviewKeyDownEventArgs
的成员
不是,但它是 KeyEventArgs 的成员。以上是关于有些键盘比其他键盘更健谈吗?的主要内容,如果未能解决你的问题,请参考以下文章
用过的来说说,MacBook和Thinkpad比,打字手感差很多吗
苹果macbook,键盘失灵,只有电源键有用,其他的都失灵了,连灯都不亮,图和型号如下,求解
将 TabBarView 中的其他选项卡更改为其他选项卡时,键盘仍然显示