Vb.net 如何调用事件?

Vb.net 如何调用事件?,vb.net,scintilla,Vb.net,Scintilla,当我的闪烁文本窗口添加了文本时,如何调用字符化的事件。我尝试添加以下内容: Private Sub Scintilla_CharAdded(ByVal sender As System.Object, ByVal e As ScintillaNet.CharAddedEventArgs) Handles Scintilla1.CharAdded CType(TabControl1.SelectedTab.Controls.Item(0), Scintilla).AutoCom

当我的
闪烁文本窗口添加了文本时,如何调用
字符化的
事件。我尝试添加以下内容:

  Private Sub Scintilla_CharAdded(ByVal sender As System.Object, ByVal e As ScintillaNet.CharAddedEventArgs) Handles Scintilla1.CharAdded
        CType(TabControl1.SelectedTab.Controls.Item(0), Scintilla).AutoComplete.Show()
    End Sub
但它只在设计文件中的窗体上实现闪烁窗口时调用。但是,当我像这样实施它时,我需要工作:

Dim TextInput As New Scintilla
Public Class MyForm
    Private WithEvents TextInput As New Scintilla

    Private Sub Scintilla_CharAdded(sender As Object, e As ScintillaNet.CharAddedEventArgs) Handles TextInput.CharAdded
        ' ...
    End Sub
End Class
那么,当此事件未直接放置在我的设计器中时,是否可以调用它


谢谢。

如果您想使用
Handles
关键字,可以通过将
TextInput
定义为表单字段(表单级别的变量,任何方法之外)来实现。然后需要将
WithEvents
修饰符添加到变量声明中,如下所示:

Dim TextInput As New Scintilla
Public Class MyForm
    Private WithEvents TextInput As New Scintilla

    Private Sub Scintilla_CharAdded(sender As Object, e As ScintillaNet.CharAddedEventArgs) Handles TextInput.CharAdded
        ' ...
    End Sub
End Class

如果不能将其定义为表单的字段,则无法使用
句柄
关键字。在这种情况下,您需要使用
AddHandler
RemoveHandler
命令向对象注册事件处理程序。

当用户添加文本时,会引发事件,并且可以调用事件中的代码。您的代码不应该调用事件,否则您将编写越来越多的代码来识别真正的事件和您引起的事件。那个代码试图做什么?OTOH,代码可以存在于事件之外。只需编写一个过程来做你想做的事情并调用它。