我需要通過單擊按鈕在 flowLayoutPanel 中創建一個物件,與已經存在的物件相同。這樣相同的屬性仍然存在,但物件的名稱發生了變化(例如,block1 被復制,新物件被稱為 block2)。這如何在 C# Windows 表單中完成?
uj5u.com熱心網友回復:
我認為最好的方法是IClonable在您的控制下實施。然后,您可以實作該Clone方法,這將使您可以控制要克隆的屬性。
public partial class MyUserControl : UserControl, ICloneable
{
public string Name { get; set; }
public MyUserControl()
{
InitializeComponent();
}
private void MyUserControl_Load(object sender, EventArgs e)
{
this.lblName.Text = this.Name;
}
public object Clone()
{
MyUserControl? result = Activator.CreateInstance(this.GetType()) as MyUserControl;
if (result != null)
{
foreach (var control in this.Controls)
{
// Clone child controls or properties as needed
}
}
return result ?? this;
}
}
然后,在您的按鈕單擊事件中,您可以執行以下操作:
private void btnCreate_Click(object sender, EventArgs e)
{
// Get the "master" control to clone from
var userControl = this.flowLayoutPanel1.Controls[0] as MyUserControl;
if (userControl != null)
{
for (int x = 2; x < 10; x )
{
MyUserControl? clone = userControl.Clone() as MyUserControl;
if (clone != null)
{
clone.Name = $"Block {x}";
this.flowLayoutPanel1.Controls.Add(clone);
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/454927.html
下一篇:使用陣列以外的東西來實體化新物件
