【发布时间】:2014-04-16 01:49:25
【问题描述】:
我刚开始使用 C# 和 MVP 设计模式。 当涉及到事件处理时,我对具体的实现持怀疑态度。我知道,视图不应该知道演示者,演示者应该通过视图界面控制视图。
假设我有 2 个文本框并且想要检查错误。如果发生错误,我想更改文本框 Text 属性。创建一个 EventHandler 并使用 sender 对象来验证用户当前正在使用的女巫文本框是错误的方法吗?
类似:
IView:
interface IMainView
{
event KeyPressEventHandler KeyPressed;
}
查看:
public partial class MainView : Form, IMainView
{
public frmInterakcija()
{
InitializeComponent();
this.textBox1.Name = "textBox1";
this.textBox2.Name = "textBox2";
new MainPresenter();
Bind();
}
private void Bind()
{
this.textBox1.KeyPress += KeyPressed;
this.textBox2.KeyPress += KeyPressed;
}
}
演讲者:
class MainPresenter
{
private IMainView _view;
public MainPresenter(IMainView view)
{
_view = view;
this.initialize();
}
public void initialize()
{
_view.KeyPressed += _view_textBoxKeyPressed;
}
public void _view_textBoxKeyPressed(object sender, EventArgs e)
{
if (sender.GetType() == typeof(TextBox))
{
TextBox textBox = (TextBox)sender;
if (textBox.Name.Equals("textbox1")
{...} // Do validation/changes on textbox1
else ...
}
}
}
或者我应该为我拥有的每个文本框创建事件处理程序并通过属性更新/处理错误而不是上面的这个? (我猜这会使我的代码变得多余)
什么是正确的方法?
【问题讨论】:
标签: c# winforms design-patterns mvp