J'ai un WinForm et quelques propriétés qui sont définies dessus.
par exemple: Nom, adresse sont acceptés sur le formulaire.
(beaucoup de propriétés dans l'exemple réel)Refactoring Form.ShowDialog() code à MVP
L'implémentation actuelle est un peu similaire à
frmName frmView = new frmName(); //frmName is WINFORM
frmView.Name= "ABC"; //any valid string or read this from file
frmView.Address="SomeAddress"; //any valid address or read this from file
if (frmView.ShowDialog() == DialogResult.OK)
{
//OK CLICK PROCESS and
// get new values edited by user
string name = frmView .Name;
string address = frmView.Address;
doProcessing(name,address);
}
else{
//Ignore cancel click..
}
comment je ne convertir en une application Winform basée MVP.
ont également besoin de factoriser le traitement effectué sur ShowDialog() au présentateur/Modèle
(je sais pas exactement où de le faire)?
Également besoin d'éviter d'écrire du code sur le formulaire lui-même (vue passive)
Merci à tous.
thx pour la réponse. Aussi s'il vous plaît pouvez-vous expliquer la manipulation des erreurs partie .. (3ème paragraphe .. "Dans certaines circonstances où ....") – Amitd
@Amitd: Dans l'exemple de code dans ma réponse, la demande de l'utilisateur est transmise au présentateur lors de * la fermeture * de la boîte de dialogue. Que faire si cette requête entraîne une erreur? Par exemple, le même nom et l'adresse ont déjà été traités et enregistrés quelque part. Il semble préférable d'afficher l'erreur dans la boîte de dialogue et de permettre à l'utilisateur de changer son nom ou son adresse, au lieu d'avoir à ouvrir une boîte de dialogue * new * pour réessayer. Vous pouvez le faire en passant le présentateur dans la boîte de dialogue, en le faisant faire la demande elle-même, et en ne le fermant que si cela * ne provoque pas une erreur. – Rich
@Rich: Oh ok. Donc, je devrai garder le présentateur comme une propriété de la vue au lieu de créer un nouveau présentateur dans la vue? – Amitd