为在类中创建的每个实例(表单,其他可视对象)设置属性

时间:2014-07-02 12:37:33

标签: .net vb.net winforms

此刻我正在玩vb.net。我正在尝试在automatisation

的设置中生成一些formproperties

想象一下,我有2个课程和2个表格

Class A
Class B
Form1
Form2

Form1&创建的所有实例在Form2中创建的Class A应该会收到以下属性

'objForm1 is an instance of Form 1
objForm1.TopMost = True

这可以使用以下逻辑

    Public Property _objForm1 As Form()
    ........ 'Some other code
    _objForm1 = New Form1()
    AddHandler _objForm1.VisibleChanged, AddressOf UpdateVisibilityProperties
    ........ 'Some other code
Private Sub UpdateVisibilityProperties(sender As Object, e As EventArgs)
    CType(sender, Form).TopMost = True
End Sub

现在问题Form1有一些其他所需的属性,然后是Form2Form1ClassA的实例的属性与ClassB中的属性不同。如何设置每个Form1的属性,并在Form2内创建的ClassA的每个实例上设置其他属性?

注意:我不想要代码(因为现实生活情况处理了几十种形式):

Private Sub UpdateVisibilityProperties(sender As Object, e As EventArgs)

    If CType(sender, Form).GetType() Is GetType(Form1) Then
       CType(sender, Form).TopMost = True
       ....
    End If
    If CType(sender, Form).GetType() Is GetType(Form2) Then
       CType(sender, Form).BackColor = Drawing.Color.Aqua
       ....
    End If
    ' Other forms may follow here
End Sub

注意amount of InstancesForm1的{​​{1}}在任何给定时间可能会在0到50之间变化。

更新:我可以在构造函数中传递属性,但我不希望这样。我想要一个不需要我改变Form2Form1

的解决方案

更新:继承不是一个选项。 Form2 ClassA中设置的属性可能与Form1中设置的属性不同。其次编写基类/接口会迫使我对不同的表单进行更改(覆盖方法/实现方法)

感谢您的时间

0 个答案:

没有答案