从它的模块之一调用用户控件中的方法
Call method in user control from one of it's modules
我创建了一个自定义用户控件,它在发生错误时在自身内部引发事件,并将其传递给任何使用该用户控件的应用程序。我想通过调用用户控件本身中的方法从用户控件代码中的模块引发这些相同的事件。我正在尝试做的一个例子是:
Public Class MyUserControl
Public Event MyErrorEvent(Ex as Exception)
Public Sub RaiseAnErrorSub(Ex as Exception)
RaiseEvent MyErrorEvent(Ex)
End Sub
End Class
Public Module
Public Sub DoSomething()
'Performs an operation
'An Error could happen here
'Need to raise the usercontrol's event at this point....
RaiseAnErrorSub(Ex) 'How can this call the usercontrol of this module?
End Sub
End Module
有没有办法调用用户控件的现有实例,从而包含方法?
如果我们确切知道用户控件的用途以及它为什么需要处理异常,我认为这个问题可能更容易回答。但即使没有这些信息,此类问题的潜在解决方案也只有这么多,具体取决于您希望它如何工作。
如果您的项目中有 一个 用户控件的特定实例,您希望引发该事件,则需要引用该实例。由于您想从 Module
访问此实例,我建议在 Module
中创建一个字段来保存该引用。您可以添加以下内容:
Public UserControlInstance As [YourUserControlTypeHere]
因为这会在 Module
中,所以它会自动 Shared
(根据你的问题判断这是一个你可能想继续阅读的编程概念)。这样就可以在项目的任何地方引用它,而无需使用实例。
您可能希望在创建用户控件时将 UserControlInstance
设置为该用户控件的实例。例如,如果您的用户控件是 Window
或 Form
的一部分,您可以从 Window
或 [=18] 的构造函数 (Public Sub New
) 中设置 UserControlInstance
=].
另一方面,如果您希望用户控件的 任何和所有 实例在调用 RaiseAnErrorSub
时引发事件,您可以同时设置 RaiseAnErrorSub
和 MyErrorEvent
Shared
,像这样:
Public Shared Event MyErrorEvent(Ex as Exception)
Public Shared Sub RaiseAnErrorSub(Ex as Exception)
RaiseEvent MyErrorEvent(Ex)
End Sub
这样,您可以从项目中的任何地方调用 RaiseAnErrorSub
,并且您的用户控件的所有实例都会引发该事件(无论如何都是有效的)。
我创建了一个自定义用户控件,它在发生错误时在自身内部引发事件,并将其传递给任何使用该用户控件的应用程序。我想通过调用用户控件本身中的方法从用户控件代码中的模块引发这些相同的事件。我正在尝试做的一个例子是:
Public Class MyUserControl
Public Event MyErrorEvent(Ex as Exception)
Public Sub RaiseAnErrorSub(Ex as Exception)
RaiseEvent MyErrorEvent(Ex)
End Sub
End Class
Public Module
Public Sub DoSomething()
'Performs an operation
'An Error could happen here
'Need to raise the usercontrol's event at this point....
RaiseAnErrorSub(Ex) 'How can this call the usercontrol of this module?
End Sub
End Module
有没有办法调用用户控件的现有实例,从而包含方法?
如果我们确切知道用户控件的用途以及它为什么需要处理异常,我认为这个问题可能更容易回答。但即使没有这些信息,此类问题的潜在解决方案也只有这么多,具体取决于您希望它如何工作。
如果您的项目中有 一个 用户控件的特定实例,您希望引发该事件,则需要引用该实例。由于您想从 Module
访问此实例,我建议在 Module
中创建一个字段来保存该引用。您可以添加以下内容:
Public UserControlInstance As [YourUserControlTypeHere]
因为这会在 Module
中,所以它会自动 Shared
(根据你的问题判断这是一个你可能想继续阅读的编程概念)。这样就可以在项目的任何地方引用它,而无需使用实例。
您可能希望在创建用户控件时将 UserControlInstance
设置为该用户控件的实例。例如,如果您的用户控件是 Window
或 Form
的一部分,您可以从 Window
或 [=18] 的构造函数 (Public Sub New
) 中设置 UserControlInstance
=].
另一方面,如果您希望用户控件的 任何和所有 实例在调用 RaiseAnErrorSub
时引发事件,您可以同时设置 RaiseAnErrorSub
和 MyErrorEvent
Shared
,像这样:
Public Shared Event MyErrorEvent(Ex as Exception)
Public Shared Sub RaiseAnErrorSub(Ex as Exception)
RaiseEvent MyErrorEvent(Ex)
End Sub
这样,您可以从项目中的任何地方调用 RaiseAnErrorSub
,并且您的用户控件的所有实例都会引发该事件(无论如何都是有效的)。