【问题标题】:Cloning my Windows forms custom control arguably works, but I can't see the clone克隆我的 Windows 窗体自定义控件可以说是可行的,但我看不到克隆
【发布时间】:2018-08-24 08:56:17
【问题描述】:

我正在尝试克隆我的 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 或 2 个控件创建一个 minimal reproducible example
  • 您是否克隆了 Parent 属性?

标签: .net vb.net custom-controls clone


【解决方案1】:

要使控件可见,它必须是父级到窗体或以窗体为TopLevelControl 的另一个控件。如果任何祖先控件不可见,则主题控件也将不可见。

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

【讨论】:

    猜你喜欢
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 2011-09-30
    • 2016-08-31
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多