C# 将所有数据从一个用户控件复制到同一类型的另一个用户控件

C# 将所有数据从一个用户控件复制到同一类型的另一个用户控件,c#,winforms,user-controls,C#,Winforms,User Controls,我想使用复选框SameAsPrevious将所有数据从HomeAddressUC传输到PermanentAddressUC 每个UserControl都有相同的类型(AddressUserControl) 填充HomeAddressUC的数据源代码如下 private void SetTabPageDetails(string tabPageName, CustomerDetails customerDetailsCache) { customerDetailsCache = //

我想使用复选框SameAsPrevious将所有数据从HomeAddressUC传输到PermanentAddressUC

每个UserControl都有相同的类型(AddressUserControl)

填充HomeAddressUC的数据源代码如下

private void SetTabPageDetails(string tabPageName, CustomerDetails customerDetailsCache)
{
     customerDetailsCache = // calling stored procedure
     PermanentAddressUC.SetDetails(customerDetailsCache.Addresses[0]);
}
该数据源的作用域仅限于Up-it方法
SetTabPageDetails()
我尝试在复选框上实现的逻辑已更改事件为

if (chkSameAsPervious.Checked)
{
    foreach (var addressCtl in from Control ctl in this.ADDRESS_TAB.Controls select ctl as BankSys24.UI.UserControls.AddressUserControl)
    {
        if (addressCtl.GroupBoxText == "Mailing Address")
        {
            // want to do something here
        }
    }
}
我试着去关注相关的链接

它说使用第三个公共用户控件创建一个容器或接口


优化的方法是什么?

如果所有字段都相同,为什么需要为“家庭”和“邮寄地址”设置不同的用户控件

您可以同时使用一个用户控件,并为将组名设置为“家庭地址”或“邮寄地址”创建属性

您可以有两个公共方法通过传递地址对象来设置地址字段,并通过读取表单的字段来获取地址对象

在复选框的check change事件中,您可以通过调用home address用户控件即时获取地址方法来获取地址对象,然后您可以通过调用set address方法通过传递地址对象来设置邮寄地址用户控件即时的详细信息

希望这有帮助

好的,谢谢你的帮助

我找到的可能的最短解决方案如下:

if (chkSameAsPervious.Checked)
            {
                    MailingAddressUC.SetDetails(PermanentAddressUC.GetDetails() as BankSys24.DTO.Customer.Address);
            }
在哪里

 public object GetDetails()
        {
            return new BankSys24.DTO.Customer.Address { //data };
        }

Getdetails将所有数据映射为可直接传递给SetDetails()的容器类对象

谢谢

  public void SetDetails(object input)
        {
           //intermediate Object
            if (details != null)
            {
//Mapping

}