Một vài ý kiến về vấn đề này
đầu tiên này
private void mView_LoadSecondForm(object sender, EventArgs e) {
SecondForm newform = new SecondForm(); //Second form has its own Presenter.
newform.Load(); // Load the form and raise the events on its presenter.
}
gì sẽ xảy ra nếu bạn quyết định thay ThirdForm cho SecondForm? Bạn cần phải tìm mọi cuộc gọi của newform = new SecondForm và thực hiện thay đổi.
Thay vào đó bạn nên quấn việc tạo ra các SecondForm trong một Object lệnh
public class CreateSecondForm : ICommand
{
public void Execute() {
SecondForm newform = new SecondForm(); //Second form has its own Presenter.
newform.Load(); // Load the form and raise the events on its presenter.
}
}
Sau đó ở đây và bất kỳ nơi nào khác sẽ trả về hình thức thứ hai sử dụng cú pháp này
private void mView_LoadSecondForm(object sender, EventArgs e) {
CreateSecondForm createCmd = new CreateSecondForm();
createCmd.Execute(); // Load the form and raise the events on its presenter.
}
Nếu bạn muốn subsitute một hình thức hoàn toàn mới cho SecondForm sau đó bạn chỉ có một nơi bạn cần phải đi. Nếu bạn muốn chuyển sang trạng thái hoặc giá trị thiết lập thì hãy sử dụng hàm tạo của lệnh. Bạn thậm chí có thể vượt qua trong một Presenter hoặc View và có lệnh kéo thông tin từ giao diện của nó.
Một điều khác tôi khuyên bạn nên đăng ký các biểu mẫu thực hiện quan điểm của bạn thay vì sử dụng lệnh mới. Điều này được thực hiện trong quá trình khởi tạo và sổ đăng ký bị treo trong lớp ứng dụng chính của bạn.
Ví dụ:
public class MySecondForm : ISecondFormView, IViewForm
{
//Stuff ....
Public ViewFormEnum ViewFormType {
return ViewFormEnum.SecondForm;
}
//Stuff ....
}
nơi khác trong phần mềm
public void InitializeApp() {
//Stuff ....
MyApp.ViewForm.Add(new MySecondForm);
//Stuff ....
}
Sau đó lệnh được thiết lập như thế này.
public class CreateSecondForm : ICommand
{
myApp theApp;
public CreateSecondForm(myApp thisApp) {
theApp = thisApp;
}
public void Execute() {
SecondForm newform = theApp.Find(ViewFormEnum.SecondForm);
if (newForm != null)
newform.Load(); // Load the form and raise the events on its presenter.
}
}
Xin lỗi, C# của tôi không phải là ngôn ngữ chính của tôi. Ưu điểm của phương pháp này là lắp ráp có chứa các hình thức có thể hoán đổi cho một hội đồng khác nhau với một bộ khác nhau của các hình thức. Điều này đặc biệt hữu ích cho việc tự động kiểm tra nơi các lớp mô phỏng có thể được thực hiện thay vì biểu mẫu. Bạn cũng có thể thiết lập nó để xử lý các khung nhìn null hữu ích cho việc phát hành một tập con của ứng dụng đầy đủ của bạn.
Mặc dù tôi thực sự khuyên bạn sử dụng lệnh này để bao gồm việc tạo Chế độ xem của bạn. Đề xuất thứ hai về việc đăng ký Chế độ xem có thể quá mức cần thiết tùy thuộc vào ứng dụng. Trong ứng dụng CAD/CAM của tôi, tôi có hàng tá hộp thoại và một số hình thức chính khác nhau được sử dụng cho các khía cạnh khác nhau của việc thiết lập và điều khiển bàn cắt kim loại 2D. Tuy nhiên trong một số ứng dụng khác của công ty tôi, tôi sử dụng một cách tiếp cận đơn giản vì chúng chủ yếu là các tiện ích đơn giản.