Хорошая практика показывать форму из 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>());
        }
    }
Другие вопросы по тегам