【问题标题】:Copy all the data from one user control to another user control of Same Type将所有数据从一个用户控件复制到另一个相同类型的用户控件
【发布时间】:2013-04-10 10:15:42
【问题描述】:

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

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

DataSource 填充 HomeAddressUC 是这样的代码

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
        }
    }
}

我尝试关注相关链接

Best practice when you need two user controls (winforms) to communicate

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

优化的方法是什么?

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      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-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-04
        • 2015-05-22
        相关资源
        最近更新 更多