代码之家  ›  专栏  ›  技术社区  ›  Herb

克隆我的Windows窗体自定义控件可以说是可行的,但我看不到克隆

  •  0
  • Herb  · 技术社区  · 6 年前

    我正在尝试克隆我的Windows窗体自定义控件。

    在里面,我有

    Public Class UFB
        Implements ICloneable
    
        ...
    
        Public Function Clone() As Object Implements ICloneable.Clone
            'Copy this instance's properties.
            Dim oClone As New UFB With {
                .BackColor = Me.BackColor,
                'Another few dozen properties.
                ... }
    
            'Deep copy of objects in a dictionary (loop).
            ...
    
            Return oClone
        End Function
    
        ...
    End Class
    

    使用此选项的Windows窗体有一个要克隆的命令按钮。要克隆的对象命名为 cFlb

    我这样使用它:

    Public Class FMain
        Dim WithEvents cFlbClone As UFB
    
        Private Sub Clone()
            cFlbClone = CType(cFlb.Clone, UFB)
    
            cFlbClone.BackColor = Drawing.Color.Yellow    'Make it distinguishable.
            cFlbClone.Visible = True
            cFlb.Visible = False
        End Sub
    End Class
    

    在两个项目中都能很好地编译。

    上的断点 cFlb.Visible = False 让我检查一下 cFlb公司 属性。一切都在那里,尤其是深度复制元素。克隆的位置与原始位置相同。

    我唯一的问题是:我看不到克隆。什么都没有。

    我错过了什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   TnTinMn    6 年前

    要使控件可见,它必须 父母 窗体或将窗体作为其 TopLevelControl 。如果任何祖先控件不可见,则subject控件也将不可见。

    可以通过设置控件的 Parent Property 或将控件添加到父控件的 Controls Property