Windows窗体中的用户输入验证实现模型视图Presenter

时间:2012-07-30 19:33:04

标签: c# winforms validation mvp

我正在尝试验证Windows窗体应用程序中的用户输入(使用MVP设计模式)。由于这是我使用MVP的第一个项目,我不太清楚在何处以及如何放置用户输入验证代码。 具体来说,我有一个Products表单,其中包含两个文本框控件,即Productly Product和ProductPrice。

以下是我的ProductForm,IProductView和ProductPresenter

的代码

IProductView.cs

 public interface IProductView
    {
        string ProductName { get; set; }
        int ProductPrice { get; set; }

        event EventHandler<EventArgs> Save; 
    }

frmProduct.cs

public partial class frmProduct : Form,IProductView
    {
        ProductPresenter pPresenter;

        public frmProduct()
        {
            InitializeComponent();
            pPresenter = new ProductPresenter(this);
        }

        public new string ProductName
        {
            get
            {
                return txtName.Text;
            }
        }

        public int ProductPrice
        {
            get
            {
                return Convert.ToInt32(txtPrice.Text);
            }
        }

        public event EventHandler<EventArgs> Save;
    }

ProductPresenter.cs

public class ProductPresenter
{
    private IProductView pView;

    public ProductPresenter(IProductView View)
    {
        this.pView = View;
        this.Initialize();
    }

    private void Initialize()
    {
        this.pView.Save += new EventHandler<EventArgs>(pView_Save);

    void pView_Save(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }
}

我确实想使用ErrorProvider(EP)Control +,因为我将在许多表单上使用EP控件,如果我可以通过将EP代码放在某些方法中并将其传递给我来重用大部分代码,我真的很喜欢控制和适当的消息。我应该把这个验证码放在哪里?

此致

1 个答案:

答案 0 :(得分:1)

我已经使用了带有错误提供程序的基本表单,然后从中继承了其他表单。我还将可视错误代码也放在这个基本形式中。这意味着重复使用相同的代码。对于Mvp,您可以使用基本表单和应用程序视图继承的接口执行类似操作。然后,您的演示者将看到用于设置验证状态,消息等的统一界面。