0

我在我的一个项目中实现了视觉继承。从基础形式有两种派生形式。我也有两个来自一个基类的常规派生类。每个派生形式都处理派生类之一,该派生类实例化适当类的对象。例如,有一个名为“letter”的基本形式和两个派生形式“A”和“B”,而有一个基类“base”和两个派生类“a”和“b”。当我“调用”“A”时,“a”中的对象被实例化,“b”和“B”的规则相同。

我在“A”表单上所做的是使用几个文本框来填充“a”类中对象的属性,并且在“B”表单的情况下,使用“b”类填充对象的属性。

我有点期待做的是从程序的某个点“调用”每个表单(“A”或“B”) - 在这种情况下,另一个表单 - 并处理我用实例化的对象正确形式的事件。

问题是我的“A”和“B”形式的事件代码在 95% 的情况下都是相同的。我首先认为我可以将所有这些放在基本形式(“字母”)上并在那里使用派生对象,但我不能。这基本上是因为我不能使用我在派生表单上实例化的对象以及来自基本表单的事件。例如,我不能使用我在“A”上创建的“a”类中的一个对象以及“字母”上的事件,尽管我可以使用我在“上”创建的“a”类中的一个对象字母”与“A”上的事件。经过一番思考,我确实明白为什么会发生这种情况。

我的解决方案是将所有事件代码放在“A”和“B”表格上,效果很好。

问题是我来自表格“A”和“B”的事件在 95% 的情况下仍然相似。我认为我正在做一些非常混乱和不必要的事情。所以,我的问题是:如何优化我的工作,以便我只能编写一次事件?大声笑,长帖子和短问题。我很感激任何帮助。

谢谢,

里卡多·S。

4

1 回答 1

0

letter 可以有一个 base 的实例。在 A 中会有一个将 base 的实例转换为 a 的属性。

Class letter
    Inherits Forms

    protected _base As base
End Class

Class A
    Inherits letter

    Public ReadOnly Property objA As a
        Get
            Return CType(_base, a)
        End Get
    End Property

    Public Sub New()
        _base = new a
    End Sub
End Class

另一种选择是创建一个用户控件,该控件包含将基作为参数的类似功能。然后,您只需要将相同的用户控件放入两个表单中。

于 2013-11-14T15:29:20.307 回答