C# 如何在Windows mobile或MC67中禁用密钥重复

C# 如何在Windows mobile或MC67中禁用密钥重复,c#,windows-mobile,C#,Windows Mobile,我正在使用摩托罗拉的WindowsMobile6.0和c#compact框架 我想禁用按键重复,所以如果你长按“回车”键,我就不会再按一次“回车”键了。我搜索了摩托罗拉手册,并尝试了给出的建议,具体做法如下: 但是没有用 有人能帮我吗 需要明确的是:我可以从代码中更改注册表,但即使在我将速率更改为最大可能值后,它也会忽略注册表中的值。如果此项是软件按钮,则可以禁用该按钮: private void btnOK_Clicked(object sender, EventArgs e) { btn

我正在使用摩托罗拉的WindowsMobile6.0和c#compact框架

我想禁用按键重复,所以如果你长按“回车”键,我就不会再按一次“回车”键了。我搜索了摩托罗拉手册,并尝试了给出的建议,具体做法如下:

但是没有用

有人能帮我吗


需要明确的是:我可以从代码中更改注册表,但即使在我将速率更改为最大可能值后,它也会忽略注册表中的值。

如果此项是软件按钮,则可以禁用该按钮:

private void btnOK_Clicked(object sender, EventArgs e) {
  btnOK.Enabled = false;
  try {
    // Your code here
  } finally {
    btnOK.Enabled = true;
  }
}
如果这是针对您设备上的物理密钥,我真的不知道如何进入并设置“点击率”(或它的名称),但您可以尝试在例程周围添加一个

private object m_lock = new object();

private void textbox_Changed(object sender, EventArgs e) {
  lock (m_lock) {
    // Your code here
  }
}

不过,我不知道这是否有帮助。我无法测试,因为我这里的设备似乎没有相同的问题。

硬件键盘可能不关心注册表设置,硬件驱动程序是特定于OEM的

重复率a)非常高(超出规格),b)将在首先重新启动后发生,c)可能仅控制软件键盘


这里有一个长长的线程,终于找到了IOCtl解决方案:。

谢谢josef,尽管它没有帮助,我已经在我的问题中发布了这个链接:)谢谢你的努力,所以,你已经读到:“第一次延迟之前的延迟-最小:250,最大:1000(初始延迟)重复率-最小:0,最大:30(重复率)如果在CP中将repeat rate设置为0,它将不会在标准键盘或d-pad的CP图标选择中重复,所以必须是它。”然后使用10000作为repeat rate?!如果将RepeatRate设置为0,则会禁用重复。你也尝试过IOCtl吗?谢谢你jp2code,但如果我要这么做,我必须对我构建的每个表单或每个控件都这么做,这不是一个新项目,这是一个有10年历史的项目,正在移动以支持MC67。。。很多工作,但这将是一个很好的最后手段。谢谢你的努力
private object m_lock = new object();

private void textbox_Changed(object sender, EventArgs e) {
  lock (m_lock) {
    // Your code here
  }
}