【问题标题】:C#: Copy all properties from one Label to another Label. Is it possible?C#:将所有属性从一个标签复制到另一个标签。可能吗?
【发布时间】:2017-03-13 16:52:54
【问题描述】:

为了便于理解,我有一个将对象作为标签返回的函数,我们称之为“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 中的所有属性提供给另一个。
不像thislabel1 存在于设计器中

【问题讨论】:

  • x=1赋值,它不会测试逻辑。
  • @tadman 谢谢,已更正。
  • 为什么不用调试器测试一下看看?
  • 那么,您是想创建另一个Label,其文本与现有文本相同,还是试图在各个方面都生成一个精确的副本?或者你只是想用一些默认值创建一个全新的标签?
  • @OusmaneMahyDiaw 我做到了,但没有成功。没有错误,但也没有输出。这就是我来这里的原因

标签: c# winforms label


【解决方案1】:

您所描述的内容称为“深度复制”。有几种方法可以在涉及的技术魔法数量范围内完成此操作,但对于您的情况,我建议保持简单,只需使用辅助方法来复制您关心的所有属性:

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。)

【讨论】:

  • 对不起,你能解释一下代码吗?我看不懂
  • @PedroLima 它的作用是创建一个新的Label 对象,然后将您传递的标签(即label1)中的属性复制到新的Label 中,然后将其作为完全返回新对象。
  • 但没有标注 newLabel = CopyLabel(label1);读作标签 = 标签?
  • ,没有!它分配一个具有所有相同属性的新创建的标签。
  • @PedroLima 变量“newLabel”是对“CopyLabel”方法返回的对象的引用。如果你还是不明白,网上有很多关于对象的免费课程和书籍。
猜你喜欢
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多