如何在VB.NET应用程序中为同一设备创建不同窗体上的事件?

如何在VB.NET应用程序中为同一设备创建不同窗体上的事件?,vb.net,handler,Vb.net,Handler,我正在开发一个POS程序,应用程序中有一个POS键盘COM控件。双击图标时,将创建一个事件: 如何在应用程序中为同一设备创建不同形式的事件?根据目前的评论,我将提供一个我认为适用的答案 当涉及到处理事件时,您有一个变量,您可以为该变量分配一个对象,然后处理该变量的事件。当指定的对象引发其事件时,将执行处理方法。因此,在您的情况下,首先需要以处理事件的形式声明一个变量,例如 Private WithEvents posKeyboard As SomeType WithEvents关键字是该变

我正在开发一个POS程序,应用程序中有一个POS键盘COM控件。双击图标时,将创建一个事件:




如何在应用程序中为同一设备创建不同形式的事件?

根据目前的评论,我将提供一个我认为适用的答案

当涉及到处理事件时,您有一个变量,您可以为该变量分配一个对象,然后处理该变量的事件。当指定的对象引发其事件时,将执行处理方法。因此,在您的情况下,首先需要以处理事件的形式声明一个变量,例如

Private WithEvents posKeyboard As SomeType
WithEvents
关键字是该变量能够在
Handles
子句中使用所必需的。我使用
SomeType
,因为我不知道对象的实际类型,尽管我怀疑它类似于
\u IOPOSPOSKeyboard

然后,您可以编写一个方法来处理所需事件,从其他表单复制签名:

Private Sub posKeyboard _DataEvent(sender As Object, e As AxOposPOSKeyboard_CCO._IOPOSPOSKeyboardEvents_DataEventEvent) Handles posKeyboard .DataEvent
    '...
End Sub

然后,您需要传入将从另一个窗体引发事件的对象,这可以通过构造函数中的参数或其他方法或属性设置器来实现。

如果您想编写好的代码,您不会这样做。如果您解释了表单之间的关系,那么我们可以提供关于如何在表单之间进行通信的最佳建议。该应用程序以一个名为“HW”的表单开始,我的所有销售点设备都是在此表单上创建的,用于现金抽屉、扫描仪等。我打开并启用这些设备以供使用。pos键盘上有一个数据事件,当我按下按钮时,它会触发“退出”按钮的点击,将我带到“登录屏幕”。从那里,我想为登录屏幕和将来的其他屏幕上的HW屏幕中定义的POS键盘生成一个事件。我希望这是有意义的。
PosKeyboard
HW
表单上的控件还是提供物理键盘抽象的对象?它是对象。但由于它是POS键盘,所以它不像HID键盘那样被识别,我只能使用Keydown选项。希望这有帮助为什么会有问题?为什么不能简单地将对象传递给另一个表单,并像往常一样在那里处理它呢?我理解您对在每个表单中声明系统所说的话。至少我认为这就是你所指的。这就是我试图避免的。对于我这样做的每个表单,我都必须打开设备,因此它基本上就像一个新设备一样。我试图避免禁用和关闭每个表单的设备。硬件屏幕始终在后台打开,只是不可见。还有什么建议吗?没有,您不必为每个表单打开设备。不,这不是新设备。听我说。在每个表单中声明一个变量。变量只是一个变量,仅此而已。然后将现有对象从一个for传递到另一个for,并将其指定给变量。变量和对象是两个不同的东西。如果只有一个对象,则只能打开设备一次。如果愿意,可以将同一个对象分配给1000个变量,但它仍然只是一个对象。告诉我,你是父亲的妻子,你的母亲和你表妹的姑妈三个不同的人吗?
Private Sub posKeyboard _DataEvent(sender As Object, e As AxOposPOSKeyboard_CCO._IOPOSPOSKeyboardEvents_DataEventEvent) Handles posKeyboard .DataEvent
    '...
End Sub