【问题标题】:C# MVP - method callC# MVP - 方法调用
【发布时间】:2011-03-03 15:04:34
【问题描述】:

我试图围绕 C#/Winforms 应用程序中使用的 MVP 模式展开思考。创建一个简单的表单,在listivew 中加载文件夹和文件。

IDiffView.cs

 public interface IDiffView
{
    string SourceFolderPath{ get; set; }
    string RemoteFolderPath{ get; set; }
    string GetFolderPath();
    void PopulateSourceDirectory(IEnumerable<string> dirs);
}

在 MainForm 中,我有以下 PopulateSourceDirectory() 的实现。

MainForm.cs

 #region IDiffView Members
 public void PopulateSourceDirectory(IEnumerable<string> dirs)
    {
        foreach (var directory in dirs)
        {
            ListViewItem item = new ListViewItem();
            item.Group = lstViewSource.Groups[0];
            item.Text = Path.GetFileName(directory);
            **//item.ImageKey = AddDirectoryIcon();**
            item.Tag = directory;

            lstViewSource.Items.AddRange(new ListViewItem[] { item });
        }
    }
#endregion

在这里,我有点困惑如何调用为 listviewItem 分配图像键的方法,即 AddDirectoryIcon() 。 我是否应该将 AddDirecotryICon() 保留在 MainForm.cs 类中,还是应该移动到演示者,还是需要在 IDiffView 中定义它。

【问题讨论】:

    标签: c# mvp


    【解决方案1】:

    我会将 PopulateSourceDirectory 更改为如下所示:

    public class ImageDirectory
    {
       public string Directory{get;set;}
       public Image Image {get;set;} //or whatever type ListViewItem.ImageKey is...
    }
    

    然后在你的界面中:

    public interface IDiffView
    {
        string SourceFolderPath{ get; set; }
        string RemoteFolderPath{ get; set; }
        string GetFolderPath();
        void PopulateSourceDirectory(IEnumerable<ImageDirectory> dirs);
    }
    

    在您的表单中:

    public void PopulateSourceDirectory(IEnumerable<ImageDirectory> dirs)
    {
        foreach (var directory in dirs)
        {
            ListViewItem item = new ListViewItem();
            item.Group = lstViewSource.Groups[0];
            item.Text = Path.GetFileName(directory.Directory);
            item.ImageKey = directory.Image;
            item.Tag = directory;
    
            lstViewSource.Items.AddRange(new ListViewItem[] { item });
        }
    }
    

    在您的演示者中,您将拥有获取目录及其相关图像的逻辑...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多