J'ai essayé MVP et il semble également fonctionner très bien avec les formulaires Windows. Ce livre contient un exemple de formulaires Windows avec modèle MVP (exemple d'application de paie). L'application n'est pas si complexe mais vous donnera une idée de la façon de la créer.
Principes, modèles et pratiques Agile en C # ...
Vous pouvez obtenir le code source au code
source
ÉDITER:
Il existe deux variantes du modèle MVP (a) Vue passive et (b) contrôleur de supervision
Pour les scénarios de liaison de données complexes, je préfère utiliser le modèle de contrôleur de supervision. Dans le modèle de contrôleur de supervision, la responsabilité de la liaison de données incombe à la vue. Donc, pour treeview / datagrid, cela devrait être dans les vues respectives, seule la logique indépendante de la vue devrait être déplacée vers le présentateur.
Je vous recommande de jeter un œil au framework MVP suivant
MVC # - Un framework MVP
N'allez pas par le nom (c'est un framework MVP).
Vidéo MVP Winforms simple
Winforms - MVP
Un exemple de gestion de MVP de liste déroulante
- DropDownList
Exemple de liaison d'arborescence simple (liaison de pauvre homme). Vous pouvez ajouter n'importe quelle logique spécifique à l'arborescence dans BindTree ().
Vous trouverez ci-dessous l'extrait de code .... non testé, directement saisi à partir de la pensée ....
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);
}
}