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

Signaler
Messages postés
11
Date d'inscription
jeudi 10 novembre 2005
Statut
Membre
Dernière intervention
11 avril 2006
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
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

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
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