从类到类重用代码

时间:2014-07-08 09:20:47

标签: c# winforms namespaces code-reuse

我有2 winforms名为AppNamespace.MYFormAnotherNamespace.AnotherForm   他们都有一个按钮。

当用户点击AnotherNamespace.AnotherForm按钮时,我想点击AppNamespace.MYForm上的按钮。

但是,有AnotherNamespace无法使用AppNamespace的瑕疵 这使我无法做到:

AppNamespace.MYForm firstForm = new AppNamespace.MYForm();
firstForm.button.PerformClick();

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

将助手类/其他命名空间中的按钮单击代码分开,然后在按钮单击中调用它。

您可以通过调用helper命名空间和方法在任何命名空间中使用该方法。

答案 1 :(得分:0)

手动执行任何控件的事件是一种不好的做法。创建单独的方法并执行它。

您可以创建界面,然后将其实现到两个表单。界面应包含方法PerformClick

public Interface IMyInterface
{
    void PerformClick(string _module);
}

public class Form1 : IMyInterface
{
   public void IMyInterface.PerformClick(string _module) 
   {
      //CODE HERE
      if (Application.OpenForms["Form2"] != null && _module != "Form2")
          ((IMyInterface)Application.OpenForms["Form2"]).PerformClick(_module);
   }

   private void button1_Click(object sender, EventArgs e)
   {
       this.PerformClick(this.Name);
   }
}


public class Form2 : IMyInterface
{
   public void IMyInterface.PerformClick() 
   {
      //CODE HERE
      if (Application.OpenForms["Form1"] != null && _module != "Form1")
          ((IMyInterface)Application.OpenForms["Form1"]).PerformClick(_module);
   }

   private void button1_Click(object sender, EventArgs e)
   {
       this.PerformClick(this.Name);
   }
}

答案 2 :(得分:0)

通过编辑Form2.Designer.cs,在第二个表单Button上创建public

public System.Windows.Forms.Button button1;

Click注册到第一个表格:

private void Form1_Load(object sender, EventArgs e)
{
    // or whatever you do to create the 2nd form..
    AnotherNamespace.Form2 F2 = new AnotherNamespace.Form2();
    F2.Show();
    // register the click:
    F2.button1.Click += button2_Click;
}

或者以第二种形式创建Property

public Button myButton { get; set;  }

并将其设置为Button

public Form2()
{
   InitializeComponent();
   myButton = button1;
}

现在您可以像这样注册Click

F2.myButton.Click += button2_Click;