Vb.net 在派生窗体之间共享代码

Vb.net 在派生窗体之间共享代码,vb.net,winforms,inheritance,visual-inheritance,Vb.net,Winforms,Inheritance,Visual Inheritance,我已经在我的一个项目中实现了可视化继承。基本形式有两种派生形式。我还有两个来自一个基类的正则派生类。每个派生形式都处理一个派生类,该派生类建立一个适当类的对象。例如,有一个称为“字母”的基形式和两个派生形式“a”和“B”,而有一个基类“基”和两个派生类“a”和“B”。当我“调用”a“时,来自“a”的对象被实例化,“b”和“b”的规则相同 我对表单“A”所做的是使用几个文本框来填充类“A”中对象的属性,对于表单“B”,则填充类“B”中对象的属性 我期望做的是从程序的某个点“调用”每个表单(“A”或

我已经在我的一个项目中实现了可视化继承。基本形式有两种派生形式。我还有两个来自一个基类的正则派生类。每个派生形式都处理一个派生类,该派生类建立一个适当类的对象。例如,有一个称为“字母”的基形式和两个派生形式“a”和“B”,而有一个基类“基”和两个派生类“a”和“B”。当我“调用”a“时,来自“a”的对象被实例化,“b”和“b”的规则相同

我对表单“A”所做的是使用几个文本框来填充类“A”中对象的属性,对于表单“B”,则填充类“B”中对象的属性

我期望做的是从程序的某个点“调用”每个表单(“A”或“B”)——在本例中是另一个表单——并使用正确形式的事件处理我实例化的对象

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

我的解决方案是将所有事件代码放在表单“A”和“B”上,它运行良好

问题是,我在形式“A”和“B”中的事件在95%的时间里仍然是相似的。我想我正在做一些相当混乱和不必要的事情。所以,我的问题是:如何优化我的工作,使我只能写一次事件?哈哈,长帖子和短问题。谢谢你的帮助

谢谢


Ricardo S.

letter可以有一个base实例。在中,将有一个属性将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作为参数的类似功能。然后您只需要将相同的用户控件放入两种表单中。

我认为我们可能需要某种图表来显示这些类之间的关系以及常用方法。可能只是需要将实例强制转换为其他类型。您可能正在寻找一个接口而不是继承,但我不能确定,因为它非常混乱。您将不得不发布一个示例事件处理程序。您可能需要进行一些重构才能做到这一点,这样基本表单就可以调用子类中多余的虚拟对象,甚至可以使用泛型。我们需要看到更多。阿洛斯,请编辑你的帖子,去掉“a”、“b”和“c”作为类名。将示例重命名为更详细的名称,以增加清晰度。甚至“FormA”、“BaseClass”、“ChildClassB”也更好。