LoadControl de l'application Windows
-
28-09-2019 - |
Question
Est-il possible de LoadControl dans l'application Windows?
Je génération d'email web, mais je veux le déplacer vers les fenêtres service bulletin mensuel.
Les e-mails sont mis en œuvre maintenant comme UserControls, de cette façon personne html peut facilement modifier look & feel.
regarde en cours de mise en œuvre comme le rendu:
StringBuilder sb = new StringBuilder(4000);
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
Page page = new Page();
EmailTemplateBase emailCtrl = (EmailTemplateBase)page.LoadControl(
"Controls/EmailTempaltes/Template.ascx");
// Exception here
emailCtrl.DataContext = dataContext;
emailCtrl.Parameter = parameter;
emailCtrl.RenderMode = renderMode;
emailCtrl.DataBind();
emailCtrl.RenderControl(htw);
subject = emailCtrl.Subject;
string MessageText = sb.ToString().Replace("\t", "").Replace(Environment.NewLine, "");
return MessageText;
La solution
solution pour moi était d'appeler le service Web, ce qui a pu générer Html de .ascx.
- passer des paramètres nécessaires à webservice
- dans Webservice, Build nouvelle page, que LoadControl
- Régler tous les paramètres
- Do rendu à StringBuilder.
Vous pouvez voir le code en question.
Autres conseils
au lieu de la méthode utilisée dans LoadControl
asp.net, vous pouvez utiliser la méthode de Controls.Add
du contrôle des parents. Il suffit d'ajouter un panneau pour être le parent alors:
UserControl uc1 = new UserControl //this is your usercontrol
Panel1.Controls.Add(uc1);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow