霍尼韦尔Dolphin 9500(Pocket PC 2003)C#事件处理冲突?

Eri*_*c H 11 c# pocketpc compact-framework event-handling windows-mobile

环境

  • Windows XP x32 Visual Studio 2005标准版
  • 运行Windows Mobile 2003的Honeywell Dolphin 9500(Pocket PC 2003)
    • 内置条码扫描器和B&W相机
    • 使用位于此处的SDK .
  • .NET Compact Framework 1.0 SP3和.NET Framework 1.1
  • 使用VC#

目标

我正在尝试创建一个允许个人扫描条形码然后捕获图像的应用程序.这些事情不应该同时发生.用户应该能够仔细检查条形码扫描,然后移动到处理图像捕获的应用程序部分.


问题

行号在下面的"代码"部分的friendpaste链接中引用了我的代码.

我有两个事件处理程序:一个用于条形码扫描器控件的解码事件,另一个用于通过KeyDown事件调用图像捕获控件.解码控件有自己的事件/处理程序DecodeEventHandler和一个带有枚举(lns 201和202)的触发键.但是,图像控制没有.它的文档声明Form应该有一个KeyDown事件处理程序(ln 120)和触发器键enum(ln 178).运行应用程序(没有SelectedIndexChanged [ln 76]事件处理程序),条形码扫描仪工作得很好,但切换到选项卡(或表格,因为我也尝试了单独的表格),与图像捕获控制和点击设备上的触发键(在这种情况下为SCAN)会使掌上电脑的行为类似于仍在扫描条形码(红灯亮起,绿灯瞄准灯亮,遇到条形码时发出哔哔声)而不是使用时通常显示的行为图像控制(没有灯光,或像闪光灯一样的白灯).


我试过的事情

  • 重要说明:如果从应用程序中删除解码控件,则图像控件可以正常工作.如果我只使用图像控件构建一个单独的应用程序,它就可以工作.
  • 我在第210行设置了一个断点,发现KeyDown事件永远不会被击中.此时我尝试以某种方式隔离事件处理程序或控件,因此我为我的选项卡控件引入了SelectedIndexChanged事件处理程序,并在切换到具有适当控件的选项卡时,我尝试删除事件处理程序.我能够删除DecodeEvent处理程序,但仍然无法命中我写的KeyDown事件处理程序委托.
  • 霍尼韦尔SDK的解码和图像控制都有"断开"事件(引用文档)"断开与扫描引擎的连接".所以我尝试根据我切换到哪个选项卡断开连接并重新连接控件,但是也没有成功.
  • 我还读到某个地方,如果表格失去焦点,表格事件有时会被中断.所以我实现了Form.LostControl事件/处理程序并放入this.Focus()以将焦点返回到表单但无济于事.
  • 我遇到过多个人,建议KeyPreview = true并在表单级别处理/委派事件.看来.NET Compact Framework版本1没有实现这一点,因为我的Form对象没有KeyPreview成员.
  • 在TriggerKey枚举内(第202行的示例),设备上有Enter键的枚举.我尝试将其连接到图像控件,然后扫描到解码器控件,但仍然无法点击KeyDown事件.

http://friendpaste.com/355cQOCghvPkE5YR29lthO

我将代码发布为friendpaste链接,因为它有点长(~230行).如果我应该把它包含在这里,请告诉我.


需要其他信息?

提问,我会尽我所能!

我会标记这个Honeywell Dolphin 9500,但我是新用户.

Eri*_*c H 0

我发现如果我将 TriggerKey 更改为 TK_ENTER(triggerkey 枚举中的另一个值),我可以与图像控件交互,没有任何问题。现在我只需要找到一种方法来捕获 Enter 按键,以防止它做任何奇怪的事情。

感谢您的帮助!