1

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

每个用户控件具有相同的类型(地址用户控件)

在此处输入图像描述

填充 HomeAddressUC 的 DataSource 是这样的代码

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

该数据源的范围取决于它的方法,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)进行通信时的最佳实践

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

优化的方法是什么?

4

2 回答 2

0

我找到的可能的最短解决方案是这样的:

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() ...

于 2013-04-10T11:24:08.810 回答
0

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

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

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

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

于 2013-04-10T10:38:27.507 回答