Nie robi się tak. Tzn. może ktoś tak robi, ale to jest złe, bo łamie zasady takie jak hermetyzacja i SRP.
Kontrolki nie powinny nigdy być znane poza klasą Formy. Ta klasa powinna mieć właściwości i metody, które operują na jej wewnętrznych kontrolkach. Te metody i właściwości mogą niech będą zgrupowane w jakimś interfejsie, który Form implementuje. I teraz - ponieważ jest interfejs, to można napisać klasę, która będzie na nim operowała, i która może być całkowicie niezależna od technologii GUI.
I z grubsza w ten sposób działa wzorzec MVP.
Przykład kodu:
interface ICustomerView
{
string Description { get; set; }
}
public class EditForm: Form, ICustomerView
{
// InitizalizeComponents i inne rzeczy standardowe
public string Description
{
get { return this.textBoxDescription.Text; }
set { this.textBoxDescription.Text = value; }
}
}
class CustomerPresenter
{
private ICustomerView customerView;
public CustomerPresenter(ICustomerView customerView)
{
this.customerView = customerView;
}
public DoSomething()
{
this.customerView.Description = "coś";
}
}