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