将ListBox封装在公共属性中

时间:2014-06-08 18:00:21

标签: c# .net winforms properties mvp

MVP应用程序中,如果我想在公共属性中封装ListBox,以便我可以通过与演示者的接口公开该属性。我应该能够通过这个公共属性更新ListBox中的项目。我已经尝试过几种方法来做到这一点

    public BindingSource  Permission
    {
        get { return lstGivenPermissions.DataSource; } // Casting error
        set { lstGivenPermissions.DataSource = value; }
    }

我尝试了多种类型的属性,例如IEnumereble<>List<>等,但是setter或geter总是显示出一个转换错误。

一种选择是为getset设置单独的属性。

   public ListBox gettingPermission
   {
        get {return lstGivenPermissions; }
   }

    public BindingSource  Permission
    {
        set { lstGivenPermissions.DataSource = value; }
    }

在这种情况下是否可以使用单个属性,否则有两个属性是可接受的解决方案?

编辑:我使用MVP模式,我的要求是我的演示者通过界面与视图交谈。因此,如果我希望我的一个演示者访问View中的控制器(如文本框),那么这些控制器应该封装在属性中。这样我就可以通过界面公开了。

1 个答案:

答案 0 :(得分:0)

这解决了我的问题。

    public List<string>  GivenPermission
    {
        get { return lstGivenPermissions.Items.Cast<string>().ToList(); }
        set { lstGivenPermissions.DataSource = value; }
    }