C#:将所有属性从一个Label复制到另一个Label。可能吗?

时间:2017-03-13 16:52:54

标签: c# winforms label

我有一个函数将一个对象作为Label返回,以便理解我们称之为" lblStatus"。

public Label statusUpdater(int x)
{
    Label lblStatus = new Label();
    if (x==1)
    { 
        lblStatus.text = "I like Cheese!";
    }
    else
    {
        lblStatus.text = "And I don't care!";
    }        
    return lblStatus;
}
label1 = myclass.statusUpdater(1);

这可能吗?

我真正需要的是将所有属性从Label提供给另一个属性 不像this label1存在于设计器

1 个答案:

答案 0 :(得分:3)

您所描述的内容被称为" Deep Copy"。有几种方法可以实现这一点,涉及的技术魔法数量范围,但对于您的情况,我建议保持简单,只需使用帮助方法复制您关心的所有属性:

public static Label CopyLabel(Label label)
{
    Label l = new Label();
    l.Left = label.Left;
    l.Top = label.Top;
    l.Right = label.Right;
    l.Bottom = label.Bottom;
    l.Width = label.Width;
    l.Height = label.Height;
    l.Margin = label.Margin;
    l.Text = label.Text;
    // Add whatever other properties you deem important

    return l;
}

并称之为:

Label newLabel = CopyLabel(label1);

(如果您确实想要执行真正的深层复制,那么您可以查看现有答案herehere。)