[C#][ASP.NET]Prob création webcontrol contenant d'autres webcontrols

outcast_fr Messages postés 11 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 11 avril 2006 - 11 avril 2006 à 12:36
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 11 avril 2006 à 15:50
Bonjour,
Je veux créer un composite control qui contiendra plusieurs contrôles de base (bouton, textbox, liste déroulante ...).


J'ai simplifié mon problème pour vous l'exposer.
Mon webcontrol ne contient qu'un textbox avec les accesseurs (get/set).


Dans le designer, je peux donc accéder à toutes les propriétés de mon textbox (étant donné que j'ai un accesseur sur ce textbox comme attribut de mon webcontrol).


Le problème est que si je change une des propriétés (la couleur de fond, le champ texte ...), aucun changement n'a lieu ni dans le designer ni dans la page html générée.


Je me suis rendu compte par contre que si je change tout de suite après une propriété de mon webcontrol comme sa taille (width / height) alors le changement de couleur de fond par exemple est bien pris en compte en mode design (mais pas dans la page html générée).


Enfin si je bascule en mode source puis que je reviens en mode design, la couleur de fond est re-initialisée (blanc par défaut).


Si vous pouvez m'aider ce serait sympat (j'aimerais que les changements soient pris en compte et persistent).


using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.Design;
using System.Web.UI.Design.WebControls;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Collections;
using System.IO;


namespace WebControlsBasic
{
public class TestWebControl : CompositeControl, INamingContainer
{
private TextBox _MonTextBox = new TextBox();





public TextBox TheTextBox
{
get { return _MonTextBox; }
set { _MonTextBox = value; }
}



public override ControlCollection Controls
{
get
{
EnsureChildControls();
return base.Controls;
}
}


protected override void OnDataBinding(EventArgs e)
{
EnsureChildControls();
base.OnDataBinding(e);
}


protected override void CreateChildControls()
{
Controls.Clear();


Controls.Add(TheTextBox);

}


}
}


Merci :D

1 réponse

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
11 avril 2006 à 15:50
Bonjour,

tu touches à un point critique du developpement de controle pour visual studio .net, pour resoudre ton problème il va te falloir utiliser un designer via un attribut. Tu as un article qui m'a expliqué tout ca ici : http://www.dotnet-tech.com/tutoriels/wisiwyg/

Ce livre la : http://blogs.developpeur.org/tkfe/archive/2006/03/21/Quelques_liens_si_vous_souhaitez_developper_des_controles_web.aspx est aussi trés sympa car il explique bien le problème (et sa résolution ;))

bon courage


<HR>
Cyril - MVS - MCP
0
Rejoignez-nous