Хорошая практика показывать форму из UserControl
Я хочу следовать передовым методам проектирования при разработке приложений WinForms.
У меня есть UserControl с кнопкой "Добавить", чтобы открыть новую форму, где пользователь может искать сотрудников. Как я могу организовать свой код?
1 ответ
Если вы используете WinForms, вам следует использовать шаблон проектирования MVP (Model-View-Presenter). В этом случае каждый вид имеет свой ISomethingView
который содержит свойства и события, например:
public interface IBaseView
{
void Show();
void Close();
}
public interface ILoginView : IBaseView
{
string Login { get; }
string Password {get; }
event EventHandler SignIn { get; }
}
И теперь ваш UserControl должен реализовать этот интерфейс.
Также для каждого представления необходимо создать докладчика, который отвечает за связь между представлением и бизнес-логикой:
public LoginPresenter
{
// private variables
public LoginPresenter(ILoginView loginView, IOtherView otherView)
{
this.loginView = loginView;
this.otherView = otherView;
this.loginView.SignUp += OnSignUp;
}
private void OnSignUp(object sender, EventArgs eventArgs)
{
if (this.authService.Login(this.loginView.UserName, this.loginView.Password))
{
this.loginView.Close();
this.otherView.Show();
}
}
}
Вы можете использовать DI-контейнер для разрешения всех I*Vies
, например:
public class LoginUserControl : UserControl, ILoginView
{
public LoginUserControl()
{
this.loginPresenter = new LoginPresenter(this, DIContainer.Resolve<IOtherView>());
}
}