父表格和子表单中的重复方法

时间:2014-01-20 05:02:17

标签: c# winforms

  

环境:Visual Studio 2008,C#,SQL Server,Windows开发,多用户,新开发人员

我在form A中有一个方法用于在那里显示文本框信息。

此外,我还有一个按钮,在单击时显示另一个表单(表单B)。

Form B是使用frm.ShowDialog();

创建的

Form B上面有相同的文本框,名称相同,相同(从表单A 复制和粘贴)

我想使用表单A中的方法在Form B中显示信息,而不是将方法从form A复制并粘贴到form B

我在form A公开了该方法并从from B调用了该方法,但form B的文本框中没有显示任何内容。为什么?我没有任何错误。

我应该保持简单,并在表单B中放置form A方法的副本,而不是从form A调用form B中的方法吗?这是我能让它发挥作用的唯一方式。


表格A用于显示客户信息,表格B用于编辑客户信息。

我正在表单之间传递和返回信息,这些都是有效的。

表格不相同,即表格B没有客户笔记的文本框,它们是以单独的形式编辑的。

感谢您的投入。

3 个答案:

答案 0 :(得分:2)

您应该使用info类并从表单A和表单B中检索数据 不要使用重复代码,只需使用另一个类进行逻辑\信息。

您可以阅读更多相关信息here

答案 1 :(得分:0)

创建一个模型类,其成员表示要以两种形式显示的数据。在visual studio 2008中,我相信有支持基于对象创建项目数据源。从模型类创建数据源。然后,在两种形式中,添加绑定源。将源的数据类型设置为项目数据源。然后,设计器将允许您从绑定源为每个控件选择绑定。最后,在表单的构造函数中,接受模型类实例,并将绑定源的数据源设置为该实例。

答案 2 :(得分:0)

即使您在调用formA时具有相同名称的相同文本框,您只需更改formA的实例,这意味着只更改formA中的文本框。

你必须明白,每个类都有自己的实例与另一个实例分开。

这并不意味着您无法访问formA中的formB文本框。我可以看到你想巩固;如果我没有弄错你在形式上有什么方法就像:

public void methodA(Customer customer)
{
textboxName = customer.Name;
textboxAddress = customer.Address;
}

如果你不想复制这个,那么我能想到的另一种方法是:

1。)为所有重复属性创建一个接口。

public interface ICustomerForm
{
    string Name {get; set;}
    string Address {get; set;}
}

2。)让2个表单实现接口。

public class FormA : Form, ICustomerForm
{
   public string Name
   {
      get
      {
         return _textBoxName.Text;
      }
      set
      {
         _textBoxName.Text = value;
      }
   }

}

对formB执行相同的操作

3。)创建一个静态助手类,您只需传递客户类。 e.g:

public static class FormHelper
{
    public static UpdateCustomerInfo(ICustomerForm form, Customer customer)
    {
        form.Name = customer.Name;
        form.Address = customer.Address;
    }
}

4。)在您的两种形式中,只需调用辅助类并将其自身作为第一个参数传递,将客户类作为第二个参数传递。     // formA中的方法     public void formA()     {         FormHelper.UpdateCustomerInfo(this,customer);     }

//Method in formB
public void formB()
{
    FormHelper.UpdateCustomerInfo(this, customer);
}

这样,您只需在表单中使用一行代码,并且信息的设置位于整​​合的帮助程序类中。

相关问题