I have two forms:

```
class FormA : Form
{
  Initialise()
  {/*Some code */}

  btnAdd_Click()
  {
    FormB formB = new FormB() //control is given to FormB
  }
}

class FormB : Form
{
  btnOK_Click()
  {
    //When this is pressed FormB closes and passes a string back to FormA.
    //I also what a function in FormA to be called.
  }
}

```

So there is the event this.btnOK.Click. From what I can see I have two options:

1) Pass a function to FormB from FormA (say in the ctor) and call this function inside btnOK\_Click passing it the string argument.

2) Register a method with the btnOK.Click event. However I don't know where to put this registration. I want to put it in the ctor of FormA so that it is registered only once (e.g. if I put it in btnAdd\_Click when the user presses btnAdd in FormA several times the method will get registered several times.

There are so many ways to go. Can you show me what a good method will be?

**EDIT 1:**
I also don't know how to register a method in FormA with the this.btnOK.Click event that belongs to FormB. Ideally I can do this in the ctor of FormA.