【发布时间】:2014-03-24 12:06:57
【问题描述】:
我想使用 VisualBasic .Net 从 WinForms 控件中删除特定的处理程序。
例如:
我有一个 Windows.Forms.ToolStripButton 并注册了一个 Click-Event 以保存数据。
现在我需要从按钮中删除此事件,但我无法访问已注册的事件方法!我只知道使用了哪个句柄。在我的情况下“点击”
为了更好地理解:我必须为 GridView 编写扩展。选择多条线时,我必须为所选行集成大规模编辑。为此,我需要为保存按钮注册一个新的单击事件并删除旧的。但我无法访问事件处理程序的地址。我只有注册事件的按钮
这是我迄今为止尝试过的:
Dim btnSaveEventInfo = btnSave.GetType.GetEvent("Click")
Dim method = Activator.CreateInstance(btnSaveEventInfo.GetType, True)
RemoveHandler btnSave.Click, method
这会引发 InvalidCastException
有人知道吗?
Gr33tz 江鱼
【问题讨论】:
-
该方法最初是如何注册为事件处理程序的?
-
方法注册了一个处理函数:Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click SaveChanges() End Sub
-
您是否尝试过将
method显式转换为EventHandler? -
显式转换抛出与上面写的相同的错误
标签: vb.net events handler removeall