bu
İlk yapılan yorumlar Birkaç Bu
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.
}
Eğer SecondForm için ThirdForm yerine karar ne olur? Newform = new SecondForm'un her çağrısını bulmanız ve değişikliği yapmalısınız.
Bunun yerine
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.
}
}
Sonra buraya bir komut nesnesi SecondForm yaratılmasını yerleştirilmeli ve herhangi başka bir yerde ikinci bir form getirir Eğer bir subsitute istiyorsanız bu sözdizimini
private void mView_LoadSecondForm(object sender, EventArgs e) {
CreateSecondForm createCmd = new CreateSecondForm();
createCmd.Execute(); // Load the form and raise the events on its presenter.
}
kullanır SecondForm için tamamen yeni bir form, o zaman gitmeniz gereken tek bir yeriniz var. Durum veya ayar değerlerini geçmek istiyorsanız, komutun yapıcısını kullanın. Başka bir Sunum Yapan veya Görüntülemede bile geçiş yapabilir ve bu komutun bu bilgileri arayüzden almasını sağlayabilirsiniz.
Önerdiğim başka bir şey, yeni komutu kullanmak yerine görünümlerinizi uygulayan formları kaydetmenizdir. Bu, başlatma sırasında yapılır ve kayıt defteri, ana uygulama sınıfınızı kapatır. Örneğin,
.
public class MySecondForm : ISecondFormView, IViewForm
{
//Stuff ....
Public ViewFormEnum ViewFormType {
return ViewFormEnum.SecondForm;
}
//Stuff ....
}
başka yerde yazılım
public void InitializeApp() {
//Stuff ....
MyApp.ViewForm.Add(new MySecondForm);
//Stuff ....
}
yılında Sonra komut kurulum böyledir.
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.
}
}
Pardon C# bu benim birincil dilim değil. Bu yaklaşımın avantajı, Formları içeren montajın farklı bir Formlar kümesi ile farklı bir montaj için değiştirilebilmesidir. Bu özellikle, form yerine mock sınıflarının yapılabileceği testlerin otomatikleştirilmesi için kullanışlıdır. Tam uygulamanızın bir alt kümesini serbest bırakmak için yararlı olan boş Görünümleri işlemek için de ayarlayabilirsiniz.
Görünümlerinizin oluşturulmasını sarmak için bu komutu kullanmanızı kesinlikle öneririm. Görünümü kaydetmenin ikinci önerisi, uygulamaya bağlı olarak aşırı olabilir. CAD/CAM uygulamasında düzinelerce diyaloğa ve bir 2D metal kesme masasının kurulum ve kontrolünün farklı yönleri için kullanılan farklı ana formlara sahibim. Ancak, şirketimin diğer uygulamalarında, çoğunlukla basit araçlar oldukları için basit bir yaklaşım kullanıyorum.