В этом случае ваша модель будет работать с вашим zip-файлом, например, такими методами, как Print()
, Extract()
и т. Д., И такими событиями, как PrintCompleted
и ExtractCompleted
и т. Д.
Ваш IView будет предоставлять методыи события, которые абстрагируют ваше взаимодействие с пользовательским интерфейсом за интерфейсом.Так что, возможно, некоторые методы, такие как DisplayFolderContents()
и такие события, как FileSelected()
и т. Д.
Ваш докладчик подключается к событиям Model и IView и контролирует, какие методы вызываются для каждого и т. Д. Форма, которая у вас естьTabControl on - это просто реализация интерфейса IView.Вы можете получить другое представление, просто внедрив реализацию Presentation в Presenter, включая Mock IView для тестирования.
Значения могут передаваться по шаблону MVP через используемые вами EventArgs.
/// <summary>
/// The event args for a selected file.
/// </summary>
public class FileSelectedEventArgs : EventArgs
{
public string FileName { get; private set; }
public FileSelectedEventArgs(string fileName)
{
this.FileName = fileName;
}
}
Когда пользователь выбирает файл, в вашем представлении возникает событие FileSelected
, а имя файла доступно в FileSelectedEventArgs
.Presenter прослушивает это событие и вызывает метод для модели - может быть ExtractFile(string fileName)
, передавая fileName из FileSelectedEventArgs из представления.
Затем докладчик прослушивает событие ExtractCompleted
, которое должно быть запущено из модели (которая также имеет любые пользовательские аргументы событий, которые вы хотите) и вызывает соответствующий метод в вашем представлении, передавая параметры из модели.Метод в представлении может делать все, что угодно, с точки зрения отображения данных в TabControl или другим способом.
Это всего лишь один из способов сделать это в любом случае.