繁体   English   中英

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

[英]Copy all the data from one user control to another user control of Same Type

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

每个UserControl具有相同的Type(AddressUserControl)

在此处输入图片说明

数据源填充HomeAddressUC的代码是这样的

private void SetTabPageDetails(string tabPageName, CustomerDetails customerDetailsCache)
{
     customerDetailsCache = // calling stored procedure
     PermanentAddressUC.SetDetails(customerDetailsCache.Addresses[0]);
}

该DataSource的范围SetTabPageDetails()方法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
        }
    }
}

我尝试点击相关链接

需要两个用户控件(winforms)进行通信时的最佳实践

它说使用第三个通用用户控件的容器或接口

什么是优化的方法?

如果所有字段都相同,为什么需要对家庭住址和邮寄地址使用不同的用户控件?

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

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

在复选框的支票更改事件中,可以通过调用家庭地址用户控件即时获取地址方法来获取地址对象,然后可以通过传递地址对象来调用设置地址方法来设置有关邮寄地址用户控件即时的详细信息。

希望这可以帮助

好的,谢谢

我发现的可能的最短解决方案是这样的:

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

哪里

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

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

}

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

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM