我想在另一个类中触发一个事件。 我的问题是我不知道如何制作它。
我试图在我的表单中使用Inherits
语句并将其类名添加到其中,并且它可以正常工作:
Public Class Frm_Main_Copy
Inherits ToolStripMenuApp
'I have a ToolStripMenu that has declared before on my class and it sounds like this:
'Public Shared WithEvents Cat000x86_64App As ToolStripMenuItem
...
Private Sub IsClicked(ByVal sender As Object, ByVal e As EventArgs) Handles Cat000x86_64App.Click
End Sub
End Class
但设计师表格搞砸了(返回致命错误),我应该删除Inherits
语句和其他语句。
尝试充当表单设计器脚本(尝试将此代码放到我的班级中):
Friend WithEvents BlahBlah As RadioButton 'For example
它没有用,
为我的班级声明一个变量而且它也没有工作
在互联网上搜索,似乎比我想象的更复杂......
任何人都可以提供帮助?任何帮助表示赞赏。
答案 0 :(得分:0)
表单不是表单,除非它直接或间接地继承Form
类。您不能继承任何本身不是表单的类型,并期望您的类型成为表单。使用该代码,如果ToolStripMenuApp
不是表单,那么Frm_Main_Copy
也不是表单,因此没有表单设计器。
如果您实际说的是,您有一个ToolStripMenuApp
的实例,其中包含TooStripMenuItem
您希望在Click
中处理的Frm_Main_Copy
事件然后第一步是不要将Cat000x86_64App
声明为Shared
。 Frm_Main_Copy
需要声明一个能够处理该事件的方法:
Private Sub IsClicked(ByVal sender As Object, ByVal e As EventArgs)
'...
End Sub
请注意,没有Handles
子句,因为您正在处理其事件的那个类中没有WithEvents
变量。
接下来,Frm_Main_Copy
必须有权访问ToolStripMenuApp
的相应实例。根据所提供的信息,我们不可能说出如何最好地做到这一点,但它可能就像这样简单:
Dim tsma As New ToolStripMenuApp
然后将您的方法注册为适当事件的处理程序:
AddHandler tsma.Cat000x86_64App.Click, AddressOf IsClicked
如果您使用AddHandler
,请确保在完成任一对象后使用RemoveHandler
。我建议你根据这些信息做一些阅读。