环境
- Windows XP x32 Visual Studio 2005 标准版
- Honeywell Dolphin 9500 运行 Windows Mobile 2003 (Pocket PC 2003)
- 内置条码扫描仪和黑白相机
- 使用他们位于此处的 SDK 。
- .NET Compact Framework 1.0 SP3 和 .NET Framework 1.1
- 使用 VC#
目标
我正在尝试创建一个允许个人扫描条形码然后捕获图像的应用程序。这些事情不应该同时发生。用户应该能够仔细检查条形码扫描,然后移动到处理图像捕获的应用程序部分。
问题
行号在下面代码部分的friendpaste链接中引用了我的代码。
我有两个事件处理程序:一个用于来自条形码扫描仪控件的解码事件,另一个用于通过 KeyDown 事件调用图像捕获控件。解码控件有自己的事件/处理程序 DecodeEventHandler 和一个带有枚举(lns 201 和 202)的触发键集。然而,图像控件没有。它的文档指出表单应该有一个 KeyDown 事件处理程序(ln 120)和触发键枚举(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,但我是新用户。