【发布时间】:2017-09-12 14:34:03
【问题描述】:
我有一个类应该用表单做不同的事情。
因为这些“东西”是特定于表单的,所以我这样存储对表单的引用:
Friend Class clsEdit
Private m_Form As frmMain
然后我像这样将它传递给班级:
Public Sub New(ByRef uForm As frmMain)
m_Form = uForm
End Sub
现在当我的班级应该做这些“事情”时,我会这样做:
MyEditClass.DoThings()
内部是这样的:
Public Sub DoThis()
m_Form.SetHookPaused(True)
m_Form.StopCommonTimers()
End Sub
Protected Overrides Sub Finalize()
m_Form.DoSomethingThatOnlyThisFormCanDo()
End Sub
我现在也希望能够在不同的表单上使用 clsEdit。 这种另一种形式也有函数“DoThings”和“DoSomethingThatOnlyThisFormCanDo”。
但是,当我将 m_Form 的声明更改为此
Private m_Form As Form
...我不能再这样做了:
m_Form.DoThings()
...因为“DoThings”不是“Form”的属性/功能。
当我把它改成这样时:
Private m_Form As frmOther
...我不能再这样做了:
Public Sub New(ByRef uForm As frmMain)
m_Form = uForm
End Sub
谁能告诉我如何做到这一点?
【问题讨论】:
-
表单已经是一个类。您可以只向表单添加方法,而不是将其隐藏在另一个类中。不确定 Interfaces 如何在您的帖子中发挥作用。
-
是的,如果你有两个不同的表单具有相同的方法和功能,那么创建一个接口并使用它来代替。
-
你能给我一个关于这个案例的界面的kickstart吗?