【发布时间】:2014-02-04 21:40:20
【问题描述】:
我这里有个小问题。我正在尝试将拥有的表单的事件转移/传递/提高给他的父母。让我们看看我的例子:
假设我有一个初始化 CustomPanel 的表单(只是一个继承自 System.Windows.Forms.Panel 的类)。它还有一个事件处理程序(可以是其他事件,不一定是点击事件):
Public Sub New()
Me.Size = New Size(1000,1000)
Dim pnl1 As New CustomPanel()
pnl1.Location = New Point(0,0)
pnl1.size = New Size(100,100)
Me.Controls.Add(pnl1)
End Sub
Private Sub form1_Click(sender As Object, e As EventArgs) Handles Me.Click
MsgBox("I got it!")
End Sub
我做了类似的事情,当我点击 CustomPanel (pnl1) 时,父容器 (form1) 没有收到点击事件......这是可以理解的。我试图查看 CustomPanel (pnl1) 的属性,如果我能找到一些有趣的东西,比如“点击”或“向父级提出事件”(我在这里很绝望),但没有成功。我说好的,我会在 CustomPanel 类中处理我需要传递给父级的事件,但我在这里也找不到解决方案:
Imports System.Windows.Forms
Public Class CustomPanel
Inherits Panel
Public Sub New()
End Sub
Private Sub CustomPanel_Click(sender As Object, e As EventArgs) Handles Me.Click
'What to put here?
'Me.Parent.?
End Sub
End Class
我只想知道是否可以将事件抛出/引发/传递给父级。有一件事是肯定的,我不应该这样做,而且我不能向父表单添加任何其他内容。原因很简单,我可以在这个父窗体中拥有超过 100 个控件,并且可以动态添加它们。最重要的是,这些控件内部还可以有自己的控件!所以我可以有类似的东西:
pnl99 call parent click -> pnl98 call parent click -> ... until the parent of the control really handle the click event ... -> form1 perform click event
也许很难理解,但如果你能帮助我,我将不胜感激。
【问题讨论】: