Saya telah mencoba MVP dan tampaknya berfungsi baik dengan bentuk windows juga. Buku ini memiliki contoh formulir windows dengan pola MVP (contoh aplikasi penggajian). Aplikasi ini tidak begitu rumit tetapi akan memberi Anda ide tentang bagaimana cara membuatnya.
Prinsip, Pola, dan Praktek Agile di C # ...
Anda bisa mendapatkan kode sumber di
Kode Sumber
EDIT:
Ada dua variasi pola MVP (a) Tampilan pasif dan (b) pengawas pengawasan
Untuk skenario penyatuan data yang kompleks, saya lebih suka menggunakan pola pengontrol Supervising. Dalam mengawasi pola pengontrol, tanggung jawab penyatuan data terletak pada tampilan. Jadi, untuk treeview / datagrid ini harus dalam pandangan masing-masing, hanya tampilan logika agnostik yang harus dipindahkan ke presenter.
Saya akan merekomendasikan melihat kerangka MVP berikut
MVC # - Kerangka MVP
Jangan menggunakan namanya (ini merupakan kerangka kerja MVP).
Winforms sederhana MVP video
Winforms - MVP
Contoh berurusan dengan daftar dropdown
MVP - DropDownList
Contoh pengikatan treeview sederhana (penjilidan orang miskin). Anda dapat menambahkan logika khusus tampilan pohon di BindTree ().
Di bawah ini adalah cuplikan kode .... tidak diuji, langsung dimasukkan dari pikiran ....
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);
}
}