我想實現MVP模式。我有一個用戶控件有一些文本框,當我把它放在窗體中時,我調用了一個來自usercontrol的方法並填充文本框。但在mvp模式中,我不知道如何訪問usercontrol1.fill()
。你有一個可以幫助我的例子嗎?如何在winforms mvp模式中實現usercontrol?
回答
如果您的用戶控件放置在表單中,並且假設表單是項目中的視圖,那麼這個視圖有責任訪問用戶控件。您不應直接從演示者訪問任何用戶控件的方法。事實上,演示者不應該知道這些方法的存在,甚至不需要用戶控制。演示者只知道實現該視圖的現有接口的視圖的存在。 因此,您的視圖(表單)將會知道並調用此用戶控件的方法。要傳遞演示者的值以填充放置在表單中的用戶控件,由視圖實現的界面應該使用set
方法公開屬性(如果您計劃還要讀取這些值,則使用get
方法)。 由於您的視圖正在實現此界面,因此在執行此屬性的set
方法時,您可以在那裏調用用戶控件的任何方法,因爲用戶控件包含在您的表單中,並且表單知道用戶的存在控制及其方法。你不應該從那裏訪問它有任何問題。
以同樣的方式,如果您需要從用戶控件讀取值,則應該在視圖中執行此屬性的get
實現。演示者只需使用界面中定義的get
方法讀取屬性,視圖就會知道如何訪問這些值並將其返回。
這是模式的示例實現。演示者只知道具有show方法的接口。 Presenter稱它,但唯一的窗體(又名View)實現瞭如何顯示窗體。
public interface IMyFormView {
void Show();
}
public class MyForm : IMyFormView {
public MyForm() {
var presenter = new MyFormPresenter(this);
presenter.Init();
}
public void Show() {
usercontrol1.fill();
}
}
public class MyFormPresenter
{
private IMyView _view;
public MyFormPresenter(IMyView view) {
_view = view;
}
public void Init() {
_view.Show();
}
}
如果您需要將數據傳遞到視圖,那麼你可以通過在視圖上Show
- 方法或設置自定義屬性通過視圖模型。
謝謝,但我不明白我怎麼可以訪問我的usercontrol.i的方法不要問題發送parameter.my問題是我怎麼能寫myusercontrol.fill()(填充是我的方法名稱)? –
我改變了相應的代碼。現在,演示者調用'_view.Show()',然後填充您的控件。 –
- 1. 在winforms中使用MVC MVP模式
- 2. winforms MVP設計模式
- 3. 如何使用MVP模式在Winforms中構建項目?
- 4. 如何將UserControl附加到MVP模式中的表單上?
- 5. STP MVP設計模式的實現
- 6. 實現文件上傳的MVP模式
- 7. Moq與WinForms MVP模式 - 失敗測試
- 8. MVP和IoC - WinForms如何實現「屏幕集合」?
- 9. MVP中的WinForms
- 10. 數據庫查詢在MVP模式中實現在哪裏?
- 11. Android MVP實現
- 12. MVP Android實現
- 13. 如何在MVP模式中使用UiHandler
- 14. 如何在WinRT中實現UserControl
- 15. WPF UserControl的按鈕:如何實現UserControl?
- 16. 使用winforms實現觀察者模式
- 17. 如何將一個WPF usercontrol內WInforms usercontrol?
- 18. 當展現在winform MVP模式視圖
- 19. 如何在winforms中實現groupbox的'wordwrap'?
- 20. 在UserControl中實現DataTemplate DependencyProperty
- 21. 在使用ObjectBuilder實現MVP模式時使用NullReferenceException
- 22. 如何處理MVP模式中的SharedPreferences?
- 23. 如何在Kotlin中實現Memento模式
- 24. 如何在php中實現flyweight模式?
- 25. 如何在Tkinter中實現MVC模式
- 26. mvp模式中的winforms之間的通信
- 27. 在WinForms中控制vs UserControl?
- 28. MVP如何實現簡單的登錄
- 29. 爲WinForms MVP應用程序實現業務對象
- 30. WinForms中的MVP導航
@ veronika.op:如果您有其他問題,請不要編輯此條目,而要創建一個新條目。我回滾了最新的變化。 –