在派生表单之间共享代码

时间:2013-11-14 12:06:17

标签: vb.net winforms inheritance visual-inheritance

我在我的一个项目中实现了可视化继承。从基础派生出两种派生形式。我还有一个基类的两个常规派生类。每个派生形式处理一个派生类,用于实现正确类的对象。例如,存在称为“字母”的基本形式和两个派生形式“A”和“B”,同时存在基类“基”和两个派生类“a”和“b”。当我“调用”“A”时,来自“a”的对象被实例化,并且它与“b”和“B”的规则相同。

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

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

事情是我的表格中的事件代码“A”和“B”在95%的时间都是相同的。我首先想到我可以将所有这些放在基本形式(“字母”)上并在那里使用派生对象,但我不能。这种情况基本上是因为我无法使用我在基础表单中使用事件从派生表单实例化的对象。例如,我无法处理“a”类中创建的“a”类中的一个对象,其中包含“letter”上的事件,尽管我可以使用我创建的类“a”中的对象“字母“有关事件”A“。经过一番思考后,我明白为什么会这样。

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

事情是我的事件从形式“A”和“B”仍然相似95%的时间。我想我正在做一些非常混乱和不必要的事情。所以,我的问题是:如何优化我的工作,以便我只能编写一次事件?大声笑,长帖和短问题。我感谢任何帮助。

谢谢,

里卡多S.

1 个答案:

答案 0 :(得分:0)

信可以有一个基数的实例。在A中将具有将base的实例转换为。

的属性
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

另一个选项是创建一个用户控件,其中包含将base作为参数的类似功能。然后你只需要将同一个用户控件放到两个表单中。