Eu tentei MVP e parece funcionar muito bem com o Windows Forms também. Este livro tem um exemplo de formulários do Windows com padrão MVP (aplicativo de folha de pagamento de amostra). O aplicativo não é tão complexo, mas lhe dará uma idéia de como proceder para criá-lo.
Princípios, padrões e práticas ágeis em C # ...
Você pode obter o código fonte em
Source Code
EDITAR:
Existem duas variações do padrão MVP (a) visão passiva e (b) controlador de supervisão
Para cenários complexos de ligação de dados, prefiro seguir o padrão do controlador de supervisão. Na supervisão do padrão do controlador, a responsabilidade da ligação de dados é da visão. Portanto, para treeview / datagrid, isso deve estar nas respectivas visualizações, apenas a lógica agnóstica da visualização deve ser movida para o apresentador.
Recomendarei dar uma olhada na seguinte estrutura MVP
MVC # - Uma estrutura MVP
Não use o nome (é uma estrutura MVP).
Vídeo simples do winforms MVP
Winforms - MVP
Um exemplo de como lidar com a lista suspensa
MVP - DropDownList
Exemplo simples de ligação em árvore (ligação do pobre homem). Você pode adicionar qualquer lógica específica da árvore em BindTree ().
Abaixo está o trecho de código .... não testado, digitado diretamente do pensamento ....
public interface IYourView
{
void BindTree(Model model);
}
public class YourView : System.Windows.Forms, IYourView
{
private Presenter presenter;
public YourView()
{
presenter = new YourPresenter(this);
}
public override OnLoad()
{
presenter.OnLoad();
}
public void BindTree(Model model)
{
// Binding logic goes here....
}
}
public class YourPresenter
{
private IYourView view;
public YourPresenter(IYourView view)
{
this.view = view;
}
public void OnLoad()
{
// Get data from service.... or whatever soruce
Model model = service.GetData(...);
view.BindTree(model);
}
}