Windows 포맷을 MVP로 만들기
Windows 포맷은 코드를 예쁘게 쓰기 어렵습니까?닮다
나는 Model-View-Presenter라는 모델로 구성 요소를 분할해 보았다.
이루어지다
View 설계
화면은 이런 느낌으로 2개의 라벨과 1개의 단추를 배치한다.
뷰입니다.
View 커넥터
방금 테이블(View)에 정보를 입력할 인터페이스를 정의합니다.
버튼을 눌렀을 때 메시지 상자를 보내고 싶어서 분기구를 삽입할 수도 있다.
이 물건은 폼에서 실현될 것이다.
IMainForm.cs
public interface IMainForm
{
string Title { get; set; }
string Author { get; set; }
Action<string> ShowMessageCommand { get; set; }
}
Presenter다음은 Presenter 입니다.이 녀석은 뷰로 표시할 정보를 준비하고 있다.
구조기로 View를 수신하고 방금 인터페이스를 통해 정보를 전달합니다.
MainFormPresenter.cs
public class MainFormPresenter
{
private IMainForm _view;
public MainFormPresenter(IMainForm view)
{
_view = view;
Initialize();
}
private void Initialize()
{
// HACK: 本当はこのあたりはModelから取得されるはずのデータ
_view.Title = "MvpWinFormsTest!";
_view.Author = "mono";
_view.ShowMessageCommand += (msg) =>
{
MessageBox.Show(msg);
};
}
}
View비디오 코드.
ImainForm을 실제로 설치하면 프레젠테이션으로부터 정보를 얻을 수 있습니다.
MainForm.cs
public partial class MainForm : Form, IMainForm
{
public MainForm()
{
InitializeComponent();
}
public string Title
{
get { return label1.Text; }
set { label1.Text = value; }
}
public string Author
{
get { return label2.Text; }
set { label2.Text = value; }
}
public Action<string> ShowMessageCommand { get; set; }
private void button1_Click(object sender, EventArgs e)
{
ShowMessageCommand("button1 Clicked!");
}
}
생성 프로세스 실례창을 표시할 때 창에 연결된 Presenter를 만들 수도 있습니다.
Program.cs
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var f = new MainForm();
var p = new MainFormPresenter(f);
Application.Run(f);
}
}
액션버튼까지 포함해서 잘 돌아가는 것 같아.
총결산
MVP 같은 방법으로 이동할 수 있다.
분위기상으로는 MVM의 데이터를 스스로 조립해 묶어놓고 하는 것처럼 느껴진다.
이번에는 다음과 같은 의문을 남겼다.
윈포즈에 대응하는 MVP용 부품도 많지만 모두 모니터로 돼 있어 시도하지 않았다.
나도 좀 더 정교한 그림을 만들어 보고 싶다.
참고 자료
mrts/winforms-mvp: Windows Forms example of the Passive View variant of the Model-View-Presenter pattern
https://github.com/mrts/winforms-mvp
Reference
이 문제에 관하여(Windows 포맷을 MVP로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mono1729/items/d0995f841b8e875b91e4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)