С какой проблемой вы столкнулись? В любом случае я сделал примерную (пока базовую) структуру того, как вы можете достичь этого в WinForm. Я сделал с использованием своего рода шаблона представления модели.
Прежде всего, у нас есть презентатор, который будет работать с единицей работы почти так же, как контроллер
internal class EmployeePresenter
{
private readonly IEmployeeFormView _employeeFormView;
private readonly IUnitOfWork _unitOfWork;
public EmployeePresenter(IEmployeeFormView view)
{
_employeeFormView = view;
_unitOfWork = new SqlUnitOfWork();
}
internal void GetData()
{
var id = 1; //parameter
var employee = _unitOfWork.Employees.Single(e => e.Id == id);
_employeeFormView.PopulateData(employee.Name);
}
}
Тогда у нас есть интерфейс и форма, реализующая этот интерфейс
public interface IEmployeeFormView
{
void PopulateData(string data);
}
public partial class EmployeeForm : Form, IEmployeeFormView
{
private readonly EmployeePresenter _presenter;
public EmployeeForm()
{
InitializeComponent();
_presenter = new EmployeePresenter(this);
}
#region IEmployeeFormView Members
public void PopulateData(string data)
{
txtName.Text = data; //txtName is a textbox on form
}
#endregion
private void btnGet_Click(object sender, EventArgs e)
{
_presenter.GetData();
}
}
Добавьте необходимую ссылку, и все готово. Возможно, это не лучший способ, но это, безусловно, способ достичь этого.
Решение загружается здесь .
Надеюсь, это поможет. Пожалуйста, не стесняйтесь обсуждать, если требуется.